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

标签 java ip

<分区>

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

谢谢。

最佳答案

没有任何库:

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

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

关于java - 将子网掩码中的位数转换为java中的点分十进制形式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17068190/

相关文章:

java - Android 应用程序中的周期性操作

seo - 有谁知道如何用shopify平台解决IP规范化?

php - 将 IPv6 存储在数据库中

mysql - 如何在MySQL中找到当前用户连接的IP地址?

java - 为 JPanel 创建构造函数来创建圆圈?

java - 我的 "find median"实现中有什么错误?

python - 如何使用 selenium 网络驱动程序抓取网站而不会被阻止

ubuntu - 如何在 Vagrant 中将 Ubuntu 配置为路由器

java - 如何打开具有预定义大小的 JFileChooser

java - DateFormat 如何解析 java 中的确切日期(如 .NET 中的 DateTime.ParseExact)?