一种转换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("\n");
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文件。


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

posted on 2018-03-10 21:34  我是某某某是我  阅读(3606)  评论(0编辑  收藏  举报

导航