我有一个字节数组,其值来自调试器
0 = -124
1 = 56
2 = 56
3 = 65
然后转换为十六进制
StringBuilder res1 = new StringBuilder();
for (byte b : Bytes) {
res1.append(String.format("%02X-", b));
}
我得到的结果是84-38-38-41
,我想将其恢复为之前的相同值,如
如果我有84-38-38-41,我怎么能得到值为
的bytearray0 = -124
1 = 56
2 = 56
3 = 65
表示十六进制字符串到十进制数组
答案 0 :(得分:2)
将所有“ - ”替换为“”,这就完成了你的工作。我希望这会有所帮助。
byte [] data = {-124,56,56,24};
StringBuilder res1 = new StringBuilder();
for (byte b : data) {
res1.append(String.format("%02X-",b));
}
String new_String = res1.toString().replaceAll("-", "");
byte [] output = DatatypeConverter.parseHexBinary(new_String);
for(int i = 0;i < output.length;i++){
System.out.println(output[i]);
}
答案 1 :(得分:0)
字节[]十六进制:
public String getHex(byte[] raw) {
final String HEXES = "0123456789abcdef";
final StringBuilder hex = new StringBuilder(2 * raw.length);
for (final byte b : raw) {
hex.append(HEXES.charAt((b & 0xF0) >> 4)).append(HEXES.charAt((b & 0x0F)));
}
return hex.toString();
}
十六进制为字节[]:*
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));
}
return data;
}
记住... 始终练习安全的十六进制!(: