如何从 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()));
与Java8:
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。
The IPAddress Java library 以多态方式支持 IPv4 和 IPv6 子网。免责声明:我是项目经理。以下代码将主机掩码转换为前缀长度:
IPAddressString maskString = new IPAddressString("0.0.0.255");
IPAddress mask = maskString.toAddress();
Integer prefLen = mask.getBlockMaskPrefixLength(false);//24
如何从 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()));
与Java8:
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。
The IPAddress Java library 以多态方式支持 IPv4 和 IPv6 子网。免责声明:我是项目经理。以下代码将主机掩码转换为前缀长度:
IPAddressString maskString = new IPAddressString("0.0.0.255");
IPAddress mask = maskString.toAddress();
Integer prefLen = mask.getBlockMaskPrefixLength(false);//24