在java中将子网掩码中的位数转换为点分十进制形式

j10*_*j10 3 java ip

我需要在 Java 中将 IP 子网掩码转换为 24 到 255.255.255.0 或 23 到 255.255.254.0。有没有我可以使用的 API?

谢谢。

gma*_*gma 5

没有任何库:

int cidrMask = 23;
long bits = 0;
bits = 0xffffffff ^ (1 << 32 - cidrMask) - 1;
String mask = String.format("%d.%d.%d.%d", (bits & 0x0000000000ff000000L) >> 24, (bits & 0x0000000000ff0000) >> 16, (bits & 0x0000000000ff00) >> 8, bits & 0xff);

>>255.255.254.0
Run Code Online (Sandbox Code Playgroud)

由于缺少 Java 中的无符号类型,必须使用 long