Java NumberFormatException-具有十六进制值的字符串
我得到了一个字节流,这个流是一个字节数组(byte[]流),现在我想先将这个字节解析为十六进制值,例如80=“0x50”,然后将其转换为int 但是对于一些值,比如0xB8,我得到了一个`java.lang.NumberFormatException:对于输入字符串:“0xB8” 我如何管理此异常?可能使用其他类型的解析或不同类型的数据Java NumberFormatException-具有十六进制值的字符串,java,exception,Java,Exception,我得到了一个字节流,这个流是一个字节数组(byte[]流),现在我想先将这个字节解析为十六进制值,例如80=“0x50”,然后将其转换为int 但是对于一些值,比如0xB8,我得到了一个`java.lang.NumberFormatException:对于输入字符串:“0xB8” 我如何管理此异常?可能使用其他类型的解析或不同类型的数据 byte k = stream[i]; int b = 0; try { b = Integer.pa
byte k = stream[i];
int b = 0;
try {
b = Integer.parseInt(String.format("0x%02X",k),16);
} catch (NumberFormatException e) {
e.printStackTrace();
}
必须对基数使用重载的parseInt方法。 对于十六进制值,例如:
Integer.parseInt("84B",16);
必须对基数使用重载的parseInt方法。 对于十六进制值,例如:
Integer.parseInt("84B",16);
试试这个:
Integer.parseInt(String.format("0b%02X",k),16);
二进制值是使用“0bxx”语法写入的请尝试以下操作:
Integer.parseInt(String.format("0b%02X",k),16);
二进制值是使用“0bxx”语法编写的我已经解决了这个问题
我已经解决了这个问题
检查此项检查@GianlucaBenucci检查它返回的字符串。格式(“0x%02X”,k),它可以返回非十六进制字符串。您需要删除前导的
0x
,此项才能工作Integer.parseInt(“84B”,16)
返回2123,但是使用0x84B
您会得到一个NumberFormatException
@gianlucbenucci检查它返回的字符串。format(“0x%02X”,k),它可以返回一个非十六进制字符串。您需要删除前导的0x
,才能工作Integer.parseInt(“84B”,16)
返回2123,但是使用0x84B
可以得到NumberFormatException
。