如何从Java中获取IP的子网

时间:2016-12-21 06:32:52

标签: java python interface ip subnet

如何从IP地址获取子网值。 例如,我们可以在Python中执行以下操作。 (但是Java怎么样?)

...
qr_code_image: {
  required: true,
  accept: "image/jpeg, image/pjpeg"
}

产值= 11.22.104.0/24

基本上,我需要一个函数将0.0.0.255转换为/ 24。感谢。

修改

-Java 7被使用。

2 个答案:

答案 0 :(得分:1)

使用番石榴:

int slash = Integer.bitCount(
        ~Ints.fromByteArray(
                InetAddresses.forString("0.0.0.255").getAddress()));

使用Java 8:

int slash = Arrays.stream("0.0.0.255".split("\\."))
        .mapToInt(Integer::parseInt)
        .map(i -> ~i & 0xFF)
        .map(Integer::bitCount)
        .sum();

使用Java 7:

int slash = 0;
for (String octet : "0.0.0.255".split("\\.")) {
    slash += Integer.bitCount(~Integer.parseInt(octet) & 0xFF);
}

slash的值为24。

答案 1 :(得分:0)

The IPAddress Java library以一种多态的方式同时支持IPv4和IPv6子网。免责声明:我是项目经理。以下代码会将主机掩码转换为前缀长度:

IPAddressString maskString = new IPAddressString("0.0.0.255");
IPAddress mask = maskString.toAddress();
Integer prefLen = mask.getBlockMaskPrefixLength(false);//24