Как преобразовать определенный байт в массиве байтов в целое число - PullRequest
1 голос
/ 25 апреля 2019

У меня есть сценарий, в котором на основе заданной строки мне нужно вернуть целочисленное значение.Я хэширую строку в байтовый массив.Теперь, поскольку мой диапазон Integer равен 0-999, который может быть представлен 2 байтами, я надеюсь использовать последние два байта массива байтов для преобразования в целое число.Но я не получаю правильный результат

Я пытался использовать метод обтекания буфера байтов, определяя смещение как длину-3 и определяя длину как 2

ByteBuffer.wrap(bytes,bytes.length-3,2).getInt()

Я ожидаю целочисленные данныеоснованный на последних двух байтах массива, но получающий Исключение в потоке "main" java.nio.BufferUnderflowException

1 Ответ

3 голосов
/ 25 апреля 2019

ByteBuffer#getInt читает 4 байтов, начиная с текущей позиции, однако ваш обернутый ByteBuffer имеет оставшийся размер (limit - position) 2, следовательно, он выбрасывает BufferUnderflowException , Вместо этого вы должны использовать ByteBuffer#getShort, который может храниться в int.

...