首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Java语言中如何将ipv6地址转换为整数

Java语言中如何将ipv6地址转换为整数
EN

Stack Overflow用户
提问于 2011-02-22 23:41:54
回答 2查看 2.3K关注 0票数 1

Java语言中如何将ipv6地址转换为整数

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2011-02-22 23:44:20

您必须使用BigInteger,因为IPv6地址比Java128位的原生整数数据类型支持的地址大。

取决于IPv6地址的格式(原始字节数组、十六进制字符串等)可能有也可能没有合适的BigInteger构造函数。

票数 5
EN

Stack Overflow用户

发布于 2019-03-25 01:34:36

open-source IPAddress Java library可以进行转换。免责声明:我是IPAddress库的项目经理。

代码语言:javascript
复制
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);

输出:

代码语言:javascript
复制
42540766452641154071740215577757643572

另请注意,代码对IPv4地址的作用相同。

该库还能够执行反向转换,直接从BigInteger或从整数字符串构造IPv6Address实例,如下所示。整数字符串必须是32位的十六进制整数字符串。

从32位十六进制整数字符串进行反向转换:

代码语言:javascript
复制
str = value.toString(16);
int len = str.length();
while(len < 32) {
    str = "0" + str;
    len++;
}
addrStr = new IPAddressString(str);
System.out.println(addrStr.getAddress());

输出:

代码语言:javascript
复制
2001:db8:85a3::8a2e:370:7334
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5080308

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档