如果给你一个网络掩码(例如255.255.255.0),你如何获得Java中的长度/位数(例如8)?
答案 0 :(得分:1)
如果您想知道有多少零位在整数的低端,请尝试Integer.numberOfTrailingZeros。
答案 1 :(得分:0)
使用InetAddress.getByName()
从中获取InetAddress,然后调用getAddress()
获取byte[]
,然后您应该可以操作以获取所需的信息。 (我不清楚这些信息是什么,因为在任何意义上255.255.255.0的'长度'都不是8 ...)
答案 2 :(得分:0)
给出的示例是/ 24,将每个八位字节转换为整数然后使用查找表,因为每个八位字节的唯一有效值可以在0-8范围内(即0
- > 0
; 128
- > 1
; 192
- > 3
; ...)。最后,将每个八位字节的值相加,以CIDR表示法生成前缀长度。
答案 3 :(得分:0)
寻找类似的东西?
int netmask = 255;
boolean bit7 = (netmask>>>7)&&0b1;
答案 4 :(得分:0)
从这里的其他一些答案可以看出,这个问题有些模糊,因为它取决于你获取信息的位置,你的例子中的网络掩码实际上是24位而不是8位。
如果您要了解有关本地界面的信息,则可以使用getNetworkPrefixLength()
的{{1}}方法。
如果信息是以字符串形式提供给您的,那么您应该将这四个八位字节分开并将它们乘以一个InterfaceAddress
,您可以使用Long
来numberOfTrailingZeros()
计算网络掩码的大小。