【发布时间】:2018-08-17 06:55:15
【问题描述】:
我很难尝试将包含十六进制字符串表示形式的字符串转换为其对应的十六进制字符串字节数组。
我试过这段代码
public static byte[] hexStringToByteArray(String s) {
int len = s.length();
byte[] data = new byte[len / 2];
for (int i = 0; i < len; i += 2) {
data[i / 2] = (byte) (((Character.digit(s.charAt(i), 16) << 4) + Character.digit(s
.charAt(i + 1), 16)) & 0xFF);
}
return data;
}
这不是我在上面的代码中寻找“FF”--> -1 的确切值。
期望是 "FF" --> byte[] { FF }.
Ex : "01FF0A2357F01A" 结果应该是这样的 byte[] { 01 FF 0A 12 57 F0 1A }。
【问题讨论】:
-
你的问题没有意义。字节数组包含字节,而不是字符。字节是数字,从 -127 到 128。表示它们的另一种方法是使用从 0 到 F 的一对字符:这称为十六进制表示。就像数字 1000 可以使用 1K 表示为字符串一样。但是 1K 仍然意味着数字 1000。
-
@JBNizet我期待这是“FF0A”--> byte[] {FF, OA}
-
@Scary Wombat .. 这不是一个重复的问题,将返回“FF”的答案标记为 -1,但我希望它是“FF”--> byte [] { FF }
标签: java arrays string hex byte