繁体   English   中英

如何从Java中的IP获取子网

[英]How to get Subnet from an IP in Java

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

interface = ipaddress.IPv4Interface('11.22.104.0/0.0.0.255')
value = interface.with_prefixlen

输出值= 11.22.104.0/24

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

编辑

-使用Java 7。

用番石榴:

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。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM