C#中与javax.nio.Buffer.flip()等效的方法是什么?

3

我正在移植一些Java代码,并需要能够翻转(javax.nio.Buffer.flip())。

我使用byte []存储数据,我想要像Buffer一样翻转这些字节数组,因为我相信在Buffer类下面也使用了byte[]。

谢谢

2个回答

1

java.nio包在.NET中没有直接的等价物。异步IO通常使用Stream.BeginRead/EndRead处理,但这不是真正的相同模型。你能告诉我们你想做什么吗?

编辑:你现在提供了你要做的低级细节,但由于在.NET中没有真正等效的nio类,你要么必须自己编写它们(不是不可能,但很麻烦),要么使用不同的更高级别类型。例如,你可以使用MemoryStream——将数据写入其中,然后将其定位回开头。这有点像翻转字节缓冲区。但是,如果没有更多关于更高级目标的信息,我们无法确定是否适用。可能有更好的方法。


0

ByteBuffer 可以使用 byte[](例如从 ByteBuffer.wrap 创建)或非 Java 堆内存(使用 ByteBuffer.allocateDirect 创建)。您可以使用 ByteBuffer.array 获取底层的 byte[]。但是,在缓冲区上调用 flip 和类似方法不会更改实际数据。相反,与数据关联的偏移量会更改。因此,使用 byte 的等效方法是更改代码与其关联的偏移量。


谢谢,flip 如何改变偏移量? - Sasha
如文档所述:“限制被设置为当前位置,然后将位置设置为零。” - Tom Hawtin - tackline

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接