Java - 如何将网络掩码转换为位/长度

时间:2013-09-18 20:22:36

标签: java netmask

如果给你一个网络掩码(例如255.255.255.0),你如何获得Java中的长度/位数(例如8)?

5 个答案:

答案 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,您可以使用LongnumberOfTrailingZeros()计算网络掩码的大小。