NumberFormatException-带有十六进制值的字符串

时间:2018-11-15 17:21:47

标签: java exception

我得到了一个字节流,该流是一个字节数组(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();
        }

3 个答案:

答案 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();
        }