如何将int转换为byte []?

Val*_*nko 3 java arrays int bytebuffer type-conversion

我试图转换intbyte[]并写了这以下内容:

byte[] bytes = new byte[4];
ByteBuffer buff = ByteBuffer.allocate(4);
buff.putInt(1222);
buff.get(bytes);
Run Code Online (Sandbox Code Playgroud)

但结果我得到了没有详细消息的java.nio.BufferOverflowException.

至于我,代码是有效的.怎么了?如何转换intbyte[]

Kay*_*man 6

flip()放入数据后忘记了缓冲区.

放入int缓冲区后,位置位于缓冲区的末尾.尝试读取数据会导致BufferUnderflowException(不溢出),因为缓冲区中没有剩余的字节要读取.


Pet*_*rey 6

一个类似的答案,不需要调用flip().

byte[] bytes = new byte[4];
ByteBuffer.wrap(bytes).putInt(0x12345678);
System.out.println(Arrays.toString(bytes));
Run Code Online (Sandbox Code Playgroud)

打印http://ideone.com/Ab4Z4V

[18, 52, 86, 120]
Run Code Online (Sandbox Code Playgroud)

这是0x12,0x34,0x56和0x78