7

如何将包含 ipv6 机器数据包目标的字符串转换为 16 字节数组?我知道 getBytes 和编码,但我似乎无法理解我应该使用哪种编码,或者我是否必须将该字符串转换为十六进制。

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

我想做的一个例子,只是为了举例说明。Obs.:我必须将字符串转换为 16 字节数组谢谢

4

2 回答 2

17

尝试这个

    InetAddress a = InetAddress.getByName("2001:0DB8:AC10:FE01:0000:0000:0000:0000");
    byte[] bytes = a.getAddress();
于 2013-06-24T03:48:43.933 回答
1

开源 IPAddress Java 库将处理各种 IPv6 地址,因此如果您的字符串需要验证或具有多种格式,则可以使用它。免责声明:我是那个图书馆的项目经理。

示例代码:

String ipv6 = "::1";
try {
    IPAddressString str = new IPAddressString("::1");
    IPAddress addr = str.toAddress();
    byte[] bytes = addr.getBytes();`
} catch(IPAddressStringException e) {
    //e.getMessage has validation error
}
于 2017-03-05T06:59:24.173 回答