簡體   English   中英

如何用Java編程語言將ipv6地址轉換為整數

[英]how to convert ipv6 address into integer in Java programming language

如何用Java編程語言將ipv6地址轉換為整數

您將必須使用BigInteger ,因為IPv6地址比Java的本機整數數據類型支持的128位大。

根據您擁有IPv6地址的格式(原始字節數組,十六進制字符串,...),可能會或可能不會有合適的BigInteger構造函數。

開源IPAddress Java庫可以進行轉換。 免責聲明:我是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:7334

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM