Java语言中如何将ipv6地址转换为整数
发布于 2011-02-22 23:44:20
您必须使用BigInteger,因为IPv6地址比Java128位的原生整数数据类型支持的地址大。
取决于IPv6地址的格式(原始字节数组、十六进制字符串等)可能有也可能没有合适的BigInteger构造函数。
发布于 2019-03-25 01:34:36
open-source IPAddress Java library可以进行转换。免责声明:我是IPAddress库的项目经理。
String str = "2001:0db8:85a3:0000:0000:8a2e:0370:7334";
IPAddressString addrStr = new IPAddressString(str);
IPAddress addr = addrStr.getAddress();
BigInteger value = addr.getValue();
System.out.println(value);输出:
42540766452641154071740215577757643572另请注意,代码对IPv4地址的作用相同。
该库还能够执行反向转换,直接从BigInteger或从整数字符串构造IPv6Address实例,如下所示。整数字符串必须是32位的十六进制整数字符串。
从32位十六进制整数字符串进行反向转换:
str = value.toString(16);
int len = str.length();
while(len < 32) {
str = "0" + str;
len++;
}
addrStr = new IPAddressString(str);
System.out.println(addrStr.getAddress());输出:
2001:db8:85a3::8a2e:370:7334https://stackoverflow.com/questions/5080308
复制相似问题