Ответ 1
Вы можете преобразовать yourInt
в байты с помощью ByteBuffer
следующим образом:
return ByteBuffer.allocate(4).putInt(yourInt).array();
Возможный дубликат:
Преобразование целочисленного в массив байтов (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;
}
Каким будет лучший способ сделать это? Помня, что я должен преобразовать этот массив байтов обратно в целое число позже.
Вы можете преобразовать yourInt
в байты с помощью ByteBuffer
следующим образом:
return ByteBuffer.allocate(4).putInt(yourInt).array();
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();
}
Это должно работать:
public static final byte[] intToByteArray(int value) {
return new byte[] {
(byte)(value >>> 24),
(byte)(value >>> 16),
(byte)(value >>> 8),
(byte)value};
}
Код взято здесь.
Изменить Еще более простое решение приведенное в этом потоке.
int integer = 60;
byte[] bytes = new byte[4];
for (int i = 0; i < 4; i++) {
bytes[i] = (byte)(integer >>> (i * 8));
}