Я помещаю разные двоичные числа в массив байтов. Один из чисел: 10001101010010010000000000001000
этот номер дает мне NumberFormatException
на линии, где я пытаюсь его разобрать, очевидно, потому что он слишком большой. См. Код ниже, где string
- это двоичное число.Ввод моих 32 бит в 4 bytearray
int number = Integer.parseInt(string, 2);
ByteBuffer bytes = ByteBuffer.allocate(4).putInt(number);
byte[] byteInstruction = bytes.array();
То, что я хочу, чтобы поместить цифры в моем массиве байт, но так как они являются 32-разрядными числами, я не хочу, чтобы занять более 4 байта в моем массиве. Когда я использую много времени для анализа, он работает, но затем я занимаю 8 пробелов в массиве байтов.
long number = Long.parseLong(string, 2);
ByteBuffer bytes = ByteBuffer.allocate(8).putLong(number);
byte[] byteInstruction = bytes.array();
Если я распечатать массив позже я получаю это:
[0, 0, 0, 0, -115, 73, 0, 8]
, где мы можем видеть, что есть 4 места бесплатно. Как я могу это решить? Как я испортил? Вся помощь приветствуется.
Дело в том, что число не помещается в 'int' потому, что в Java' Int 'подписан. –
Ты ничего не испортил. Длинные 64 бит или 8 байтов –
@ cricket_007 Но что я могу сделать? Поскольку я хочу сохранить свой номер только в 4 пробелах в массиве байтов, а не 8. – Fjodor