2015-01-12 3 views
0

Я хочу преобразовать целое число в шестнадцатеричное значение, которое я могу хранить в байтовом массиве только как шестнадцатеричное значение.преобразовать целое число в шестнадцатеричное значение, которое я могу хранить в массиве байтов как шестнадцатеричное значение только в java

Например, int i = 18254; Шестнадцатеричный эквивалент - 474E (с использованием Integer.toHexString). сейчас я хочу сохранить этот 474E в массиве байтов как байт [0] = (байт) 0x47 байт [1] = (байт) 0x4E Как я могу это сделать?

+0

Hex это представление, а не значение. Оба значения одинаковы, поэтому они отображают одно и то же двоичное представление в памяти. Таким образом, сохранение шестнадцатеричного значения не имеет смысла. Вы пытаетесь сделать преобразование int в байты, игнорируя ведущие нули? –

+0

@VincentvanderWeele: yes int для шестнадцатеричного значения, которое я могу хранить в байтовом массиве – Abinaya

ответ

0

Я просто сохранил ints и массив и конвертировал в hex с использованием масок и, если необходимо, переключился.

например. младший байт в int = i & 0x00ff, следующий максимально высокий = (i & 0xff00) >> 8.

Вы можете использовать эти же манипуляции с битами для хранения байтов по мере запроса.

(i & 0xff00) получает 2-й младший байт в int. >> 8 сдвигает его на 8 бит, поэтому теперь он хранится в младших 8 бит. (i & 0xff0000) получает 3-й байт (который вы должны сдвинуть на 16 бит) и так далее.

так:

lowerByte = intVal & 0x000000ff; 
secondLowest = (intVal & 0x0000ff00) >> 8; 
thirdLowest = (intVal & 0x00ff0000) >> 16; 

Если вам нужны все 4 байта, вы должны проверить, как обрабатывается знаковый бит ...

+0

может у объяснить furthur? – Abinaya

+0

здесь 474E находится в строке – Abinaya

+0

Точка, вам не нужно преобразовывать ее в строку вообще. Int может быть представлен как hex. – John3136

Смежные вопросы