У меня есть байтовый массив, который может иметь размер 2,3 или 4. Мне нужно преобразовать это в правильное целочисленное значение.Мне также нужно сделать это в обратном порядке, т. Е. Целое число в 2,3 или 4 символа в байтовом массиве.
Например, необработанные шестнадцатеричные байты: 54 и 49. Значение US-ASCII декодированной строки равно 61.Таким образом, целочисленный ответ должен быть 61.
Я прочитал все вопросы о преобразовании в stackoverflow и т. Д., Которые я мог найти, но они все дают совершенно неправильный ответ, я не знаю, может ли это быть кодировка?
Если я сделаю new String(lne,"US-ASCII")
, где lne
- мой байтовый массив, я получу правильный 61. Но при этом ((int)lne[0] << 8) | ((int)lne[1] & 0xFF)
я получу полный неправильный ответ.
Это можетбыть глупой ошибкой, или я полностью не понимаю схемы представления чисел в Java и идею кодирования / декодирования.
Любая помощь будет принята.
ПРИМЕЧАНИЕ: Я знаю, что могу просто разобратьстрока в целое число, но я хотел бы знать, есть ли способ вместо этого использовать быстрые операции, такие как сдвиг и двоичная арифметика?