Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/asp.net-mvc-3/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java NumberFormatException-具有十六进制值的字符串_Java_Exception - Fatal编程技术网

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

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[]流),现在我想先将这个字节解析为十六进制值,例如80=“0x50”,然后将其转换为int

但是对于一些值,比如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();
        }

必须对基数使用重载的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