Java字符串,单字符到十六进制字节
我想将单个字符的字符串转换为5个十六进制字节,一个字节表示十六进制数:
就像
String s = "ABOL1";
到
byte[] bytes = {41, 42, 4F, 4C, 01}
我尝试了下面的代码,但当字符串太大时Byte.decode
出现了错误,比如“4F”或“4C”。还有其他方法可以转换它吗
String s = "ABOL1";
char[] array = s.toCharArray();
for (int i = 0; i < array.length; i++) {
String hex = String.format("%02X", (int) array[i]);
bytes[i] = Byte.decode(hex);
}
# 1 楼答案
使用
String hex = String.format("0x%02X", (int) array[i]);
指定字符串前面带有0x
的十六进制数字更好的解决方案是直接将
int
转换成byte
:# 2 楼答案
Byte.decode() javadoc指定十六进制数的形式应为
"0x4C"
。因此,要消除异常,请尝试以下方法:还有一种更简单的转换方法,因为String类有一个将字符串转换为字节的方法:
或者,如果要将原始转换为字节数组:
# 3 楼答案
可以使用String.format()将
char
转换为十六进制String
:或者威胁
char
作为int
并使用:# 4 楼答案
你有什么理由要检查绳子吗?因为你可以这么做:
甚至用以下代码替换所有这些代码: