Val*_*nko 3 java arrays int bytebuffer type-conversion
我试图转换int到byte[]并写了这以下内容:
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.
至于我,代码是有效的.怎么了?如何转换int为byte[]?
flip()放入数据后忘记了缓冲区.
放入int缓冲区后,位置位于缓冲区的末尾.尝试读取数据会导致BufferUnderflowException(不溢出),因为缓冲区中没有剩余的字节要读取.
一个类似的答案,不需要调用flip().
byte[] bytes = new byte[4];
ByteBuffer.wrap(bytes).putInt(0x12345678);
System.out.println(Arrays.toString(bytes));
Run Code Online (Sandbox Code Playgroud)
[18, 52, 86, 120]
Run Code Online (Sandbox Code Playgroud)
这是0x12,0x34,0x56和0x78