如何在C语言中扩展IPv6地址

如何在C语言中扩展IPv6地址,c,C,我想扩展我的IPv6地址。有没有办法将该地址扩展为完整地址? 如果我得到了abcd:12::7,那么我需要将其展开为abcd:0012:0000:0000:0000:0000:0007 主要用于增加地址 我已经编写了一些代码,但显示了一个错误。错误是“致命错误C1083:无法打开包含文件:'arpa/inet.h':没有这样的文件或目录”。我使用的是visual studio 2005。对于任何类型的IPv6地址操作,都需要将其存储为4个未签名整数(每个4字节)的数组。大多数堆栈都是这样存储的,

我想扩展我的IPv6地址。有没有办法将该地址扩展为完整地址? 如果我得到了abcd:12::7,那么我需要将其展开为abcd:0012:0000:0000:0000:0000:0007 主要用于增加地址


我已经编写了一些代码,但显示了一个错误。错误是“致命错误C1083:无法打开包含文件:'arpa/inet.h':没有这样的文件或目录”。我使用的是visual studio 2005。

对于任何类型的IPv6地址操作,都需要将其存储为4个未签名整数(每个4字节)的数组。大多数堆栈都是这样存储的,这是来自linux内核:

 struct in6_addr {
         union {
                 __u8            u6_addr8[16];
                 __be16          u6_addr16[8];
                 __be32          u6_addr32[4];
         } in6_u;
 #define s6_addr                 in6_u.u6_addr8
 #define s6_addr16               in6_u.u6_addr16
 #define s6_addr32               in6_u.u6_addr32
 };

您需要使用
inet\u pton()

将字符串转换为这种压缩格式,这些问题看起来好像订单在本网站上不起作用。尝试发布您尝试过的内容。我的代码是-#包括“stdafx.h”#包括“string.h”#包括“stdlib.h”#包括“conio.h”#包括“arpa/inet.h”int#tmain(int argc,char argv[]){struct in 6#addr{无符号char s6(addr[16]//IPv6地址};struct in 6(addr IPv6;char str struct[=“abcd:1234::ffff”;if(strcnt(str,:“”>1){if(inet_pton(AF_INET6,str,&ipv6.s6_addr))printf(“%s是%0llu(ipv6)\n”,str,ipv6.s6_addr);else printf(“Error..”)}getch();返回0;}