gpt4 book ai didi

java - bytebuffer.flip() 和 bytebuffer.rewind() 的区别

转载 作者:IT老高 更新时间:2023-10-28 20:46:57 27 4
gpt4 key购买 nike

我知道 flip() 将当前缓冲区位置设置为 0,并将限制设置为上一个缓冲区位置,而 rewind() 只是将当前缓冲区位置设置为 0。

在下面的代码中,我使用 rewind() 或 flip() 得到相同的结果。

byte b = 127;
bb.put(b);
bb.rewind();//or flip();

System.out.println(bb.get());
bb.rewind();// or flip();
System.out.println(bb.get());

您能否提供一个真实的例子,说明这两种方法的区别真的很重要?提前致谢。

最佳答案

从源代码来看,它们非常相似。您可以看到以下内容:

public final Buffer flip() {
limit = position;
position = 0;
mark = -1;
return this;
}

public final Buffer rewind() {
position = 0;
mark = -1;
return this;
}

所以不同的是 fliplimit 设置为 position,而 rewind 没有。假设你分配了一个 8 字节的缓冲区,你已经用 4 字节填充了缓冲区,那么位置设置为 3,如下所示:

    [ 1  1  1  1  0  0  0  0]
| |
flip limit |
rewind limit

所以rewind刚刚使用的limit已经设置好了。

关于java - bytebuffer.flip() 和 bytebuffer.rewind() 的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16461284/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com