我正在将一些代码从ruby移植到C ++。我们需要以Redis顺序以字典格式/顺序存储IPv6地址以执行范围查询(请参阅indexing)。原始代码将每个IPv6地址转换为十进制表示,并将零填充转换为40个字符宽度。 (用于IPv4的Lib是iprange - 见评论)
新代码主要是用C ++编写的,但使用libcidr
进行IP地址解析和操作。因此,任何C或C ++答案都可以。我目前的格式是in6_addr
定义为:
struct in6_addr {
unsigned char s6_addr[16]; /* IPv6 address */
};
注意:
__uint128_t
我想避免的,因为它有目标要求问题:
char[16]
转换为字典顺序(而不是十进制表示)?提前致谢