【发布时间】:2012-05-24 21:46:40
【问题描述】:
将表示前缀掩码的 IPv6 地址转换为整数的 C 代码是什么。
例如,这个 IPv6 地址前缀掩码: FFFF:FFFF:FFFF:FFFF:0000:0000:0000:0000
将转换为 64
谢谢
需要把这个从 sockaddr_in6 改成 int
【问题讨论】:
-
IPv6 parsing in C 的可能重复项
-
你在问什么?您是否要求“在 IPV6 地址中设置的位数?因为 FFFF:FFFF:FFFF:FFFF 在任何数字系统中都不是 64,所以它恰好是一个设置了所有 64 位的 64 位数字。所以你想要整数的宽度吗?或者只是设置的位数。或者你想把它转换成一个真正的整数,比如 (2^64)-1。
-
更像 IPv4 的等价物:255.255.255.0 将是 /24,所以在这里,64 位设置为 1,使 128 位 IPv6 地址成为 /64 位网络掩码。谢谢!
-
不,不是 C 中 IPV6 解析的副本。这是出于网络目的,您希望使用整数而不是地址格式来表示网络的子网掩码。在 IPv4 中,我们将使用 255.255.255.0 表示 /24 网络或 255.255.255.248 表示 /29 网络
-
就像 IPv4:使用
inet_pton将字符串打包成一个数字,然后开始计算位。