Подтвердить что ты не робот

Java - преобразовать int в байт-массив из 4 байтов?

Возможный дубликат:
Преобразование целочисленного в массив байтов (Java)

Мне нужно сохранить длину буфера, в байтовом массиве - 4 байта.

Псевдокод:

private byte[] convertLengthToByte(byte[] myBuffer)
{
    int length = myBuffer.length;

    byte[] byteLength = new byte[4];

    //here is where I need to convert the int length to a byte array
    byteLength = length.toByteArray;

    return byteLength;
}

Каким будет лучший способ сделать это? Помня, что я должен преобразовать этот массив байтов обратно в целое число позже.

4b9b3361

Ответ 1

Вы можете преобразовать yourInt в байты с помощью ByteBuffer следующим образом:

return ByteBuffer.allocate(4).putInt(yourInt).array();

Остерегайтесь, возможно, вам придется подумать о

Ответ 2

public static  byte[] my_int_to_bb_le(int myInteger){
    return ByteBuffer.allocate(4).order(ByteOrder.LITTLE_ENDIAN).putInt(myInteger).array();
}

public static int my_bb_to_int_le(byte [] byteBarray){
    return ByteBuffer.wrap(byteBarray).order(ByteOrder.LITTLE_ENDIAN).getInt();
}

public static  byte[] my_int_to_bb_be(int myInteger){
    return ByteBuffer.allocate(4).order(ByteOrder.BIG_ENDIAN).putInt(myInteger).array();
}

public static int my_bb_to_int_be(byte [] byteBarray){
    return ByteBuffer.wrap(byteBarray).order(ByteOrder.BIG_ENDIAN).getInt();
}

Ответ 3

Это должно работать:

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

Код взято здесь.

Изменить Еще более простое решение приведенное в этом потоке.

Ответ 4

int integer = 60;
byte[] bytes = new byte[4];
for (int i = 0; i < 4; i++) {
    bytes[i] = (byte)(integer >>> (i * 8));
}