从字符串转换为字节时的NumberFormatException

时间:2010-11-09 17:27:36

标签: java byte

我遇到了一件奇怪的事。我有一个字符串形式的二进制数字,特别是“01001100”。但是我通过执行以下代码得到了上述异常


String s = "01001100";
byte b = Byte.parseByte(s);
但为什么会这样呢?而在一个字节中我们可以存储最大数量。最多127和分钟最多-128。
并且上述数字的十进制等值是76,完全在该范围内。

我得到的特殊例外是:

java.lang.NumberFormatException:值超出范围。值:01001100基数:10

有没有办法摆脱它。是的,我必须使用字节,因为我只是逐字节地提取存储在图像中的数据 谢谢。

2 个答案:

答案 0 :(得分:12)

密钥位于异常字符串的末尾:radix:10。您正在将十进制值1,001,100转换为一个字节,但它不适合。试试这个:

String s = "01001100";
byte b = Byte.parseByte(s, 2);

答案 1 :(得分:4)

01001100是一个相当大的十进制数字(超过一百万;请参阅the docs for parseByte(String))。您可能需要the version that accepts a radix

byte b = Byte.parseByte(s, 2);