У меня небольшая ошибка в коде, которую я не могу понять на всю жизнь.
У меня есть массив строк, представляющих двоичные данные (после преобразования их из шестнадцатеричных данных), например:
один индекс равен 1011, а другой - 11100. Я перебираю массив и дополняю каждый индекс нулями, чтобы каждый индекс составлял восемь байтов. Когда я пытаюсь преобразовать эти представления в реальные байты, я получаю сообщение об ошибке, когда пытаюсь проанализировать '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);
}