我想将一个字符串按单个字符转换为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);
}
4条答案
按热度按时间px9o7tmv1#
使用
String hex = String.format("0x%02X", (int) array[i]);
指定十六进制数字的步骤0x
在弦之前。一个更好的解决办法是转换
int
进入byte
直接:kxe2p93d2#
你有什么理由试着穿过绳子吗?因为你可以这样做:
或者甚至将所有这些代码替换为:
bweufnob3#
你可以从
char
到十六进制String
带string.format():或者威胁
char
作为一个int
使用方法:aij0ehis4#
javadoc的byte.decode()指定十六进制数应该在表单上
"0x4C"
. 因此,要消除异常,请尝试以下操作:还有一种更简单的转换方法,因为string类有一个将字符串转换为字节的方法:
或者,如果要将原始转换为字节数组: