如何在C中将IPv6字符串转换为unsigned char数组

时间:2016-01-25 13:14:00

标签: c ipv6

我需要将IPv6字符串转换为C中的unsigned char数组,例如: IPv6字符串" fe80:0000:0000:0000:020f:bbff:feb8:f89e",unsigned char数组中的预期结果是:

exampleIPv6Addr[16] ={0xfe, 0x80, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
                   0x02, 0x0f, 0xbb, 0xff, 0xfe, 0xb8, 0xf8, 0x9e};

是否有任何lib可以使用并意识到这一点?

1 个答案:

答案 0 :(得分:6)

inet_pton()通常用于将IPv(4/6)-adresses的文本表示转换为二进制文件:

char *ipv6str = "fe80:0000:0000:0000:020f:bbff:feb8:f89e";
struct in6_addr ipv6data;
inet_pton(AF_INET6, ipv6str, &ipv6data);

现在您可以将其作为char数组访问:

ipv6data.s6_addr[0-15];