什么是 C# 中 Java 的 ByteBuffer.wrap 的等价物?
Posted
技术标签:
【中文标题】什么是 C# 中 Java 的 ByteBuffer.wrap 的等价物?【英文标题】:What is the equivalent of Java's ByteBuffer.wrap in C#? 【发布时间】:2013-08-04 05:33:29 【问题描述】:byte[] input = new byte[] 2, 4, 5, 2, 1;
ByteBuffer bytebuf = ByteBuffer.wrap(input);
ByteBuffer.wrap(byte[] array)
方法使缓冲区和数组相互连接,修改缓冲区会导致数组被修改,反之亦然。
C# 中ByteBuffer
的等价物是内存流。但我不知道如何将 memorystream 与 array like ByteBuffer.wrap()
方法联系起来。
谁能告诉 C# 中 ByteBuffer.wrap()
的等价物是什么?
我到处搜索,但根本找不到答案。
提前致谢。
【问题讨论】:
也许你可以看看这个问题。 ***.com/questions/10078348/… 嗨@Krishna,我读过那篇文章,但它仍然没有帮助。 我不知道链接问题中缺少什么确切行为,但请检查MemoryStream
构造函数 - 有一个使用给定数组作为缓冲区...
为什么需要这样链接数组和字节操作?
【参考方案1】:
Use a binary writer and a memory stream.
我没有将此问题标记为重复问题,只是因为您没有准确地询问其他发帖人做了什么。我不知道在这种情况下该怎么做,但仍然希望帮助你。祝你好运!
为了后代的缘故,这是该链接中的代码:
MemoryStream stream = new MemoryStream();
using (BinaryWriter writer = new BinaryWriter(stream))
writer.Write(myByte);
writer.Write(myInt32);
writer.Write("Hello");
byte[] bytes = stream.ToArray();
【讨论】:
嗨@Morisson,您提供的链接正在链接回这个问题。请问可以修一下吗? 我认为这不是一个正确的解决方案。您提供的代码仅用于使用 BinaryWriter 将数组输入到内存流,它不是将流与数组连接的方法。甚至最后一个代码 byte[] bytes = stream.ToArray();将导致错误,因为无法访问该流,因为该流已被 BinaryWriter 关闭。 @NoeL - 是否愿意提供链接(MSDN?)以证明您关于ToArray
关闭/处置MemeoryStream
失败的最后陈述?
@AlexeiLevenkov,ToArray() 不会关闭流,BinaryWriter 会。我没有找到任何MSDN链接,但是这里有一个问题***.com/questions/1084813/…我已经测试过了,BinaryWriter总是关闭流
@NoeL 我不确定你为什么不喜欢 MSDN,但这可能是有用的链接MemoryStream.ToArray - “注意:此方法在 MemoryStream 关闭时有效。”以上是关于什么是 C# 中 Java 的 ByteBuffer.wrap 的等价物?的主要内容,如果未能解决你的问题,请参考以下文章
什么是 C# 中 Java 的 ByteBuffer.wrap 的等价物?