假设我有16字节的ipv6地址
struct in6_addr {
uint8_t s6_addr[16];
};
如何以跨平台方式将其转换为常规的IPv6冒号分隔字符串表示形式,而无需访问Internet?
我能以某种方式将它打印在char *缓冲区吗?
答案 0 :(得分:4)
使用inet_ntop()
如果你不能。
struct in6_addr a;
char buf[40];
...
sprintf(buf,"%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x:%02x%02x",
a.s6_addr[0], a.s6_addr[1], a.s6_addr[2], a.s6_addr[3],
a.s6_addr[4], a.s6_addr[5], a.s6_addr[6], a.s6_addr[7],
a.s6_addr[8], a.s6_addr[9], a.s6_addr[10], a.s6_addr[11],
a.s6_addr[12], a.s6_addr[13], a.s6_addr[14], a.s6_addr[15]);
编辑:修正了索引错误