如果给您一个网络掩码(例如 255.255.255.0),您如何在 Java 中获得该网络掩码(例如 8)的长度/位?
问问题
1814 次
5 回答
1
如果您想找出整数低端有多少个零位,请尝试Integer.numberOfTrailingZeros。
于 2013-09-18T20:37:20.710 回答
0
从这里的其他一些答案可以看出,这个问题有点模糊,因为它取决于您从哪里获取信息,并且您示例中的网络掩码实际上是 24 位而不是 8 位。
如果您需要有关本地接口的信息,则可以getNetworkPrefixLength()
使用InterfaceAddress
.
如果信息是作为字符串提供给您的,那么您应该分解四个八位字节并将它们相乘成一个Long
,您可以使用它numberOfTrailingZeros()
来Long
计算您的网络掩码的大小。
于 2013-09-18T21:36:32.943 回答
0
用于InetAddress.getByName()
从中获取 InetAddress,然后调用getAddress()
以获取byte[]
您应该能够操作以获取所需信息的信息。(我并不完全清楚该信息是什么,因为 255.255.255.0 的“长度”绝不是 8...)
于 2013-09-18T20:26:37.203 回答
0
给出的示例是 /24,将每个八位字节转换为整数,然后使用查找表,因为每个八位字节的唯一有效值可以在 0-8 范围内(即0
-> 0
; 128
-> 1
; 192
-> 3
; .. .)。最后,将每个八位字节的值相加,以生成 CIDR 表示法的前缀长度。
于 2013-09-18T20:28:39.700 回答
0
寻找类似的东西?
int netmask = 255;
boolean bit7 = (netmask>>>7)&&0b1;
于 2013-09-18T21:03:28.197 回答