一種轉換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文件。


有問題可以評論聯系作者交流,本文屬於原創,未經允許不得轉載或者用於其他用途。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM