Целое число Java к массиву байтов

Я получил целое число: 1695609641

когда я использую метод:

String hex = Integer.toHexString(1695609641);
system.out.println(hex); 

дает:

6510f329

но я хочу массив байтов:

byte[] bytearray = new byte[] { (byte) 0x65, (byte)0x10, (byte)0xf3, (byte)0x29};

Как я могу сделать это?

178
задан ROMANIA_engineer 15 December 2014 в 23:36
поделиться

4 ответа

Использование Bytebuffer java nio очень прост:

byte[] bytes = ByteBuffer.allocate(4).putInt(1695609641).array();

for (byte b : bytes) {
   System.out.format("0x%x ", b);
}

Вывод:

0x65 0x10 0xf3 0x29 
281
ответ дан 23 November 2019 в 20:13
поделиться
byte[] conv = new byte[4];
conv[3] = (byte) input & 0xff;
input >>= 8;
conv[2] = (byte) input & 0xff;
input >>= 8;
conv[1] = (byte) input & 0xff;
input >>= 8;
conv[0] = (byte) input;
7
ответ дан 23 November 2019 в 20:13
поделиться
integer & 0xFF

Для первого байта

(integer >> 8) & 0xFF

для второго и цикла и т. Д., Записав на предельную байтовую массив. Немного грязно, к сожалению.

1
ответ дан 23 November 2019 в 20:13
поделиться

Как насчет:

public static final byte[] intToByteArray(int value) {
    return new byte[] {
            (byte)(value >>> 24),
            (byte)(value >>> 16),
            (byte)(value >>> 8),
            (byte)value};
}

Идея - это , а не мою . Я взял это из некоторого поста на dzone.com .

141
ответ дан 23 November 2019 в 20:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: