我遇到了一件奇怪的事。我有一个字符串形式的二进制数字,特别是“01001100”。但是我通过执行以下代码得到了上述异常
String s = "01001100";
byte b = Byte.parseByte(s);
但为什么会这样呢?而在一个字节中我们可以存储最大数量。最多127和分钟最多-128。
我得到的特殊例外是:
java.lang.NumberFormatException:值超出范围。值:01001100基数:10
有没有办法摆脱它。是的,我必须使用字节,因为我只是逐字节地提取存储在图像中的数据 谢谢。
答案 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);