2013-06-24 85 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 
}