如何在 C 中将 IPv6 字符串转换为无符号字符数组

How to convert an IPv6 string to unsigned char array in C

我需要在 C 中将 IPv6 字符串转换为无符号字符数组,例如: 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};

是否有任何库可以使用和实现这个?

inet_pton() 通常用于将 IPv4/6) 地址的文本表示形式转换为二进制:

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

现在您可以通过以下方式将其作为字符数组访问:

ipv6data.s6_addr[0-15];