gpt4 book ai didi

Java Byte.parseByte() 错误

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:01:40 25 4
gpt4 key购买 nike

我的代码中有一个小错误,我一辈子都无法解决。

我有一个字符串数组,表示二进制数据(将它们从十六进制转换后),例如:一个索引是 1011,另一个是 11100。我遍历数组并用 0 填充每个索引,这样每个索引都是八个字节。当我尝试将这些表示形式转换为实际字节时,当我尝试解析“11111111”时出现错误我得到的错误是:

java.lang.NumberFormatException: Value out of range. Value:"11111111" Radix:2

这是一个片段:

String source = a.get("image block");
int val;
byte imageData[] = new byte[source.length()/2];

try {
f.createNewFile();
FileOutputStream output = new FileOutputStream(f);
for (int i=0; i<source.length(); i+=2) {
val = Integer.parseInt(source.substring(i, i+2), 16);
String temp = Integer.toBinaryString(val);
while (temp.length() != 8) {
temp = "0" + temp;
}
imageData[i/2] = Byte.parseByte(temp, 2);
}

最佳答案

这里的问题不是 byte 是有符号类型,因此它的有效值为 -128...127 吗?如果您将其解析为 int(使用 Integer.parseInt()),它应该可以工作。

顺便说一句,您也不必用零填充数字。

一旦将二进制字符串解析为 int,就可以将其转换为字节,但该值仍将被视为有符号,因此 binary 11111111 将变为 int 255 首先,然后是 byte -1 转换之后。

关于Java Byte.parseByte() 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6996707/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com