我得到了一个字节流,该流是一个字节数组(byte [] stream),现在我想首先将此字节解析为一个十六进制值,例如80 =“ 0x50”然后将其转换为整数
但是对于像0xB8这样的值,我得到了一个`java.lang.NumberFormatException:对于输入字符串:“ 0xB8”
我该如何处理此异常?也许使用其他类型的解析或不同类型的数据?
byte k = stream[i];
int b = 0;
try {
b = Integer.parseInt(String.format("0x%02X",k),16);
} catch (NumberFormatException e) {
e.printStackTrace();
}
答案 0 :(得分:2)
您必须对基数使用重载的 parseInt 方法。 以十六进制值为例:
Integer.parseInt("0x84B",16);
答案 1 :(得分:0)
尝试一下:
Integer.parseInt(String.format("0b%02X",k),16);
二进制值使用“ 0bxx”语法编写
答案 2 :(得分:0)
我已经解决了这个问题question
byte k = stream[i];
int b = 0;
try {
String hexStringNumber = String.format("0x%02X",k);
b = Integer.decode(hexStringNumber);
} catch (NumberFormatException e) {
e.printStackTrace();
}