我遇到问题,因为当使用getBytes()
方法时,java当然会将HEX代码转换为非okey的ASCI,我希望获得带有字节的数组:
[01, 00, 0A, 02, 00, 00, ....., 28, 72];
我的代码:
byte array[] = { (byte) 0x1, (byte) 0x0, (byte) 0x0A, (byte) 0x02, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x72, (byte) 0x28 };
Log.v("OUTPUT BYTE", Arrays.toString(array.getBytes()));
目前的结果:
[48, 49, 48, 48, 48, 97, 48, 50, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 48, 55, 50, 50, 56]
我需要数组中的HEX字节。
答案 0 :(得分:2)
示例代码:
package com.test;
import java.util.Arrays;
public class Hexa {
public static void main(String[] args) {
byte array3[] = { (byte) 0x1, (byte) 0x0, (byte) 0x0A, (byte) 0x02, (byte) 0x0, (byte) 0x0, (byte) 0x0,
(byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0,
(byte) 0x0, (byte) 0x72, (byte) 0x28 };
String[] hexArray = new String[array3.length];
for (int i = 0; i < array3.length; i++) {
hexArray[i] = String.format("%02X ", array3[i]);
}
System.out.println(Arrays.asList(hexArray));
}
}
输出:
[01 , 00 , 0A , 02 , 00 , 00 , 00 , 00 , 00 , 00 , 00 , 00 , 00 , 00 , 00 , 00 , 72 , 28 ]
答案 1 :(得分:0)
尝试以下代码,它可以正常工作:
byte array3[] = { (byte) 0x1, (byte) 0x0, (byte) 0x0A, (byte) 0x02, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x72, (byte) 0x28 };
Log.v("OUTPUT BYTE", Arrays.toString(data));
答案 2 :(得分:0)
byte[] data = { (byte) 0x1, (byte) 0x0, (byte) 0x0A, (byte) 0x02, (byte) 0x0, (byte) 0x0,
(byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x0,
(byte) 0x0, (byte) 0x0, (byte) 0x0, (byte) 0x72, (byte) 0x28 };
StringBuilder sb = new StringBuilder(data.length * 4 + 2);
sb.append('[');
for (byte b : data) {
sb.append(String.format("%02X, ", 0xFF & b));
}
if (data.length != 0) {
sb = sb.setLength(sb.length() - 2);
}
sb.append(']');
Log.v("OUTPUT_BYTE, sb.toString());
%02X
将给出大写十六进制数字,%02x
小写字母十六进制数字,均为零填充。由于字节有符号(byte)0x80
实际上是-128,因此需要使用由字节掩盖的int:0xFF & b
。
为StringBuilder添加良好的初始容量意味着在追加时减少内存的重新分配。