Я делаю шифровальный шифр, который требует прочитать шестнадцатеричный ключ из файла и преобразовать его в массив bytes[]
.
Единственный способ сделать это, как я выяснил, это прочитать строки из файла (с помощью bufferedReader), создать из них массив шестнадцатеричных строк и преобразовать каждый элемент массива шестнадцатеричных строк в двоичную строку, которая можетпозже будет преобразован в байт с помощью parseByte.
Для большей ясности:
- чтение строки
- получение шестнадцатеричного массива
- преобразование в двоичный файл
- преобразование в байт)
Итак, в основном это выглядит так: hex[i]
- это строка из шестнадцатеричного массива.
requiredByte[i] = Byte.parseByte(hexToBinary(hex[i]), 2);
Итак, чтобы мой метод работал, мне нужно прочитать шестнадцатеричный ключ из файла и преобразовать его в двоичные строки.
Ключ в шестнадцатеричном виде выглядит следующим образом (да, обе строки являютсято же самое):
01 23 45 67 89 AB CD EF
01 23 45 67 89 AB CD EF
Мне нужно преобразовать его в этотдвоичный ключ:
0000 0001 0010 0011 0100 0101 0110 0111
1000 1001 1010 1011 1100 1101 1110 1111
0000 0001 0010 0011 0100 0101 0110 0111
1000 1001 1010 1011 1100 1101 1110 1111
Однако пятое шестнадцатеричное число равно 89
, что означает 137
как целое число.И вы можете преобразовывать числа только от -127
до 127
в двоичную строку.
Когда я пытаюсь преобразовать шестнадцатеричное число 89 по-своему, я получаю это сообщение в консоли:
Исключение в потоке "main" java.lang.NumberFormatException: значение вне диапазона.Значение: «100011» Корень: 16
У вас есть какие-нибудь идеи, как я могу преобразовать шестнадцатеричный в двоичный файл или даже как я могу преобразовать шестнадцатеричный String[]
массив в byte[]
массив?