2017-02-21 56 views

回答

3

1太大而无法存储在2个字节中?

那么,一个int是... putInt总是写4个字节。从documentation for ByteBuffer.putInt

抛出:

BufferOverflowException - 如果是留在这个缓冲

少于四个字节,如果你只想把一个两字节整数,使用putShort代替。如果您想要以可变宽度编码(其中空间取决于值)存储数据,则可能需要自己编写代码。

1

从方法putInt的javadoc的:

写入四个字节含有给定int值,在当前的字节顺序,到该缓冲区的当前位置,然后递增由四个

位置

你只分配了2个字节,因此BufferOverflowException

当相对的put操作达到目标缓冲区的限制时抛出的未检查异常。

可以解决expading到4个字节的缓冲或使用putShort仅使用2个字节来存储数字1

1

ByteBuffer.putInt(1)把一个整数值到缓冲器中。一个整数是4个字节长(32位)。