我想将子网掩码转换为 IPV6 的前缀长度。 假设我有以下带有前缀掩码的 IPV6 地址:
2001:0DB8:0000:CD30:0000:0000:0000:0000 -> 地址
FFFF:FFFF:FFFF:FFFF:0000:0000:0000:0000 -> 前缀掩码
如何将前缀掩码转换为前缀长度,以便地址为:2001:0DB8:0000:CD30:0000:0000:0000:0000/64
我找到了 IPV4 的解决方案:
int main()
{
const char *network = "255.255.255.0";
int n;
inet_pton(AF_INET, network, &n);
int i = 0;
while (n > 0) {
n = n >> 1;
i++;
}
printf("network = %s, suffix = %d\n", network, i);
}
任何 C 代码解决方案都受到高度赞赏。
dhcpcd
有一个很好的实现。