当缓冲区未满时,为什么bytebuffer会给出缓冲区溢出异常

时间:2014-05-16 13:46:49

标签: java bytebuffer

我不确定为什么以下示例会给出缓冲区溢出异常。希望有人可以解释原因,以及我如何正确地做到这一点。

这很简单:

ByteBuffer bf = ByteBuffer.allocate(4);
bf.order(ByteOrder.BIG_ENDIAN);
bf.putInt(8);
bf.putInt(7); // Throws exception

目标:[0,0,8,7]

提前致谢!

2 个答案:

答案 0 :(得分:7)

int是4个字节长,所以你应该将4乘以你需要存储在ByteBuffer中的int数。

答案 1 :(得分:1)

javadoc

  

BufferOverflowException - 如果此缓冲区中剩余的字节少于四个

你的totalNumberOfBytes不能大到足以容纳2个整数,即。少于8个。