将字符串解析为字节时出现异常
String Str ="9B7D2C34A366BF890C730641E6CECF6F";
String [] st=Str.split("(?<=\\G.{2})");
byte[]bytes = new byte[st.length];
for (int i = 0; i <st.length; i++) {
bytes[i] = Byte.parseByte(st[i]);
}
最佳答案
这是因为默认解析方法需要十进制格式的数字,要解析十六进制数字,请使用此 parse :
Byte.parseByte(st[i], 16);
其中 16 是解析的基数。
至于你的评论,你是对的。 Byte 的最大值为 0x7F。因此,您可以将其解析为 int
并与 0xff
执行二进制 AND 运算以获取 LSB,即您的字节:
bytes[i] = Integer.parseInt(st[i], 16) & 0xFF;
关于java - 为什么 Java 会抛出 NumberFormatException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6658388/