zoukankan      html  css  js  c++  java
  • 一种转换Ipv6地址的方法

    原CSDN博客不再更新维护。

    本文介绍了一种将char* 类型的Ipv6地址转换成BYTE(unsigned char)或者in6_addr类型的方法。

    说明:使用时需要下载Ipv6++.lib和Ipv6++.dll(32位程序,64位程序可利用已有的函数自行编写)

    链接: https://pan.baidu.com/s/1C-dakhZRFbYBMp-wd4dcUw 密码: 5fcz

    使用方法:

     1 // stdafx.h : 标准系统包含文件的包含文件,
     2 // 或是经常使用但不常更改的
     3 // 特定于项目的包含文件
     4 //
     5 
     6 #pragma once
     7 
     8 #include "targetver.h"
     9 
    10 #include <stdio.h>
    11 #include <tchar.h>
    12 
    13 
    14 
    15 // TODO: 在此处引用程序需要的其他头文件
    16  
    17 
    18 // ConsoleApplication5.cpp : 定义控制台应用程序的入口点。
    19 //
    20 
    21 #include "stdafx.h"
    22 
    23 //如果需要使用in6_addr类型需要包含以下头文件
    24 #include "WINSOCK2.H"
    25 #include "in6addr.h"
    26 
    27 #pragma comment (lib,"Ipv6++")
    28 
    29 extern "C" int Ipv6AddrStringToByte(const char *pAddrV6Str, unsigned char *pOut);
    30 
    31 extern "C" int Ipv6AddrStringToIn6_addr(const char *pAddrV6Str, in6_addr *pOut);
    32 
    33 int main()
    34 {
    35     char *str = "2001:0DB8:0000:0023:0008:0800:200C:417A";
    36     unsigned char b[16] = { 0 };
    37     Ipv6AddrStringToByte(str, b);
    38     for (int i = 0; i < 15; i++)
    39     {
    40         printf("%02x-", b[i]);
    41 
    42     }
    43     printf("
    ");
    44     in6_addr *p = new in6_addr();
    45 
    46     Ipv6AddrStringToIn6_addr(str, p);
    47     for (int i = 0; i < 15; i++)
    48     {
    49         printf("%02x-", p->u.Byte[i]);
    50 
    51     }
    52         delete p;
    53     getchar();
    54     return 0;
    55 }
    View Code
    
    

    函数说明:Ipv6++.lib和Ipv6.dll由函数

    NTSYSAPI

    LONG

    NTAPI
    RtlIpv6StringToAddressW (
        _In_ PCWSTR S,//指向Ipv6地址的Wchar*指针
        _Out_ PCWSTR *Terminator,//任意的PCWSTR的非空指针
        _Out_ struct in6_addr *Addr//in6_addr类型的地址结构,在In6addr.h中定义
        );
    封装而来,使用方法见Main文件。


    有问题可以评论联系作者交流,本文属于原创,未经允许不得转载或者用于其他用途。

    除特殊说明外,其余所有文章均属原创。未经允许,请勿进行转载或者其他操作 有问题欢迎留言交流
  • 相关阅读:
    POJ 3630 Phone List/POJ 1056 【字典树】
    HDU 1074 Doing Homework【状态压缩DP】
    POJ 1077 Eight【八数码问题】
    状态压缩 POJ 1185 炮兵阵地【状态压缩DP】
    POJ 1806 Manhattan 2025
    POJ 3667 Hotel【经典的线段树】
    状态压缩 POJ 3254 Corn Fields【dp 状态压缩】
    ZOJ 3468 Dice War【PD求概率】
    POJ 2479 Maximum sum【求两个不重叠的连续子串的最大和】
    POJ 3735 Training little cats【矩阵的快速求幂】
  • 原文地址:https://www.cnblogs.com/LiuBingBlogs/p/8542168.html
Copyright © 2011-2022 走看看