繁体   English   中英

从ByteBuffer读取前四个字节,然后将其写回?

[英]Reading first four bytes from ByteBuffer, then writing them back?

我有一个名为msg的ByteBuffer对象,其预期的消息长度位于前四个字节中,其内容如下:

    int msgLen = msg.getInt();
    LOG.debug("Message size: " + msgLen);

如果msgLen小于某个阈值,则我有部分消息,需要缓存。 在这种情况下,我想将前四个字节放回消息的开头; 也就是说,将消息放回原处,使其与预读相同。 例如:

if (msgLen < threshold) {
    msg.rewind();
    msg.put(msgLen);

不幸的是,这似乎不是执行此操作的正确方法。 我尝试了翻转,放置和倒带的多种组合,但一定会造成误解。

如何将字节按其原始顺序放回写缓冲区?

答案由Andremoniy发表在评论部分。 读操作不占用缓冲区中的字节,因此msg.rewind()足够了。 由于程序中存在其他逻辑,因此在我的情况下这行不通,并且我错误地将其与缓冲区级别的问题相关联。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM