【发布时间】:2013-04-27 14:11:54
【问题描述】:
我需要一种将字符串“IP:PORT”转换为字节数组的方法。我知道如何手动格式化,但我需要一种自动格式化的方法。
示例 IP:
77.125.65.201:8099
我就是不能使用 "".getBytes();因为我需要以下格式(不带点和冒号):
[#1 octet ip] [#2 octet ip] [#3 octet ip] [#4 octet ip] [#1 2 octet port]
为了更好地理解:
77 125 65 201 8099
在 Java 中我可以手动设置它:
byte[] testIP = { 0x4D, 0x7D, 0x41, (byte)0xC9, (byte)0x1FA3 };
我需要找到一种方法,以正确格式返回字节数组,在必要时转换为字节(因为 Java 签名字节)。
这是我所做的,但它不起作用:
private void parseIp(String fullData){
String[] data = fullData.split(":"); // 8099
String[] ip = data[0].split("\\."); // 77 | 125 | 65 | 201
for(int i = 0; i < 4; i++){
System.out.println("---> " + toHex(ip[i]));
}
}
private String toHex(String data){
return Integer.toHexString(Integer.parseInt(data, 16));
}
【问题讨论】:
-
一个 Java 字节可以存储 -128 到 127。如果我们将它们解释为无符号,我们可以存储 0 到 255。没有办法将 8099 存储在单个字节中。
-
在您的原始字符串中是
77十进制还是十六进制值? -
当您说您的代码“不起作用”时,它实际上是什么意思?你有任何错误吗?你没有得到预期的结果吗?请将所有详细信息添加到您的帖子中。