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

Rui*_*ang 1 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};
Run Code Online (Sandbox Code Playgroud)

是否有任何lib可以使用并实现这一点?

Ctx*_*Ctx 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);
Run Code Online (Sandbox Code Playgroud)

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

ipv6data.s6_addr[0-15];
Run Code Online (Sandbox Code Playgroud)