Jos*_*osh 7 java parsing byte numberformatexception
我的代码中有一个小错误,我不能为我的生活弄清楚.
我有一个字符串数组,它们是二进制数据的表示形式(在从十六进制转换之后),例如:一个索引是1011,另一个是11100.我遍历数组并用0填充每个索引,以便每个索引是8个字节.当我尝试将这些表示转换为实际字节时,当我尝试解析'11111111'时出现错误我得到的错误是:
java.lang.NumberFormatException: Value out of range. Value:"11111111" Radix:2
Run Code Online (Sandbox Code Playgroud)
这是一个片段:
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);
}
Run Code Online (Sandbox Code Playgroud)
biz*_*lop 20
这里的问题不是byte签名类型,因此它的有效值是-128 ... 127?如果你把它解析为int(使用Integer.parseInt()),它应该工作.
顺便说一句,你不必用零填充数字.
一旦将二进制字符串解析为int,就可以将其转换为一个字节,但该值仍将被视为有符号,因此binary 11111111将成为int 255第一个,然后byte -1在转换之后.
| 归档时间: |
|
| 查看次数: |
19018 次 |
| 最近记录: |