为啥缓冲区未满时字节缓冲区会出现缓冲区溢出异常
Posted
技术标签:
【中文标题】为啥缓冲区未满时字节缓冲区会出现缓冲区溢出异常【英文标题】:Why do bytebuffer give buffer overflow exception when buffer is not full为什么缓冲区未满时字节缓冲区会出现缓冲区溢出异常 【发布时间】:2014-05-16 13:46:49 【问题描述】:我不知道为什么下面的例子给出了缓冲区溢出异常。希望有人能解释原因,以及我如何正确地做到这一点。
就这么简单:
ByteBuffer bf = ByteBuffer.allocate(4);
bf.order(ByteOrder.BIG_ENDIAN);
bf.putInt(8);
bf.putInt(7); // Throws exception
目标:[0,0,8,7]
提前致谢!
【问题讨论】:
总字节数是多少? 哈哈,对不起。忘记插入数字而不是变量。 4 嗯,只是我现在得到的一个结论...... putInt 可能是 Int32? :P @Ikky 与 Java 中的 C 相反,int 的大小固定为 32 位 【参考方案1】:一个 int 有 4 个字节长,因此您应该将 4 乘以需要存储在 ByteBuffer 中的 int 数。
【讨论】:
是的,在我问的那一刻就想到了:/ 谢谢 如果对你有帮助,请采纳为答案 :) 谢谢【参考方案2】:javadoc 状态
BufferOverflowException
- 如果此缓冲区中剩余的字节少于四个
您的totalNumberOfBytes
不能大到容纳 2 个整数,即。小于 8。
【讨论】:
以上是关于为啥缓冲区未满时字节缓冲区会出现缓冲区溢出异常的主要内容,如果未能解决你的问题,请参考以下文章