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; } 

什么是完成这个最好的方法? 请记住,我必须稍后将该字节数组转换回整数。

你可以像这样使用ByteBufferyourInt转换为字节:

 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}; } 

代码取自这里 。

编辑 在这个线程中给出一个更简单的解决scheme。

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