2013-06-24 125 views
3

如何將包含ipv6的機器數據包目標的字符串轉換爲16字節數組?我知道getBytes和編碼,但我似乎無法理解我應該使用哪種編碼,或者我是否必須將該字符串轉換爲十六進制。Java IPv6地址字符串到字節

String ipv6 = "2001:0DB8:AC10:FE01:0000:0000:0000:0000"; 
byte[] bytes = ipv6.getBytes(); //must be a 16 byte array 

一個我想要做的例子,只是爲了舉例說明。 實驗值:我必須將字符串轉換爲16字節數組 感謝

回答

11

試試這個

InetAddress a = InetAddress.getByName("2001:0DB8:AC10:FE01:0000:0000:0000:0000"); 
    byte[] bytes = a.getAddress(); 
+0

噢,我的上帝,這是非常簡單的,謝謝主席先生! – user2514661

0

The open-source IPAddress Java library會處理各種IPv6addresses的,因此它可以,如果你的字符串需要驗證,或者使用有各種各樣的格式。免責聲明:我是該圖書館的項目經理。

示例代碼:

String ipv6 = "::1"; 
try { 
    IPAddressString str = new IPAddressString("::1"); 
    IPAddress addr = str.toAddress(); 
    byte[] bytes = addr.gtBytes();` 
} catch(IPAddressStringException e) { 
    //e.getMessage has validation error 
}