将 int 转换为4字节的 Byte 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;
}

实现这一目标的最佳方式是什么?记住,稍后我必须将字节数组转换回整数。

148277 次浏览

这应该会奏效:

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

代码 从这里带走

编辑 一个更简单的解决方案是 在这个线程中给出

您可以使用如下 ByteBufferyourInt转换为字节:

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

当你这样做的时候,请注意你可能不得不考虑 字节顺序

int integer = 60;
byte[] bytes = new byte[4];
for (int i = 0; i < 4; i++) {
bytes[i] = (byte)(integer >>> (i * 8));
}
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();
}