如何在C#中将struct转换System.Byte byte[]为System.IO.Stream对象?
如何在C#中将struct转换System.Byte byte[]为System.IO.Stream对象?
Answers:
将字节数组转换为流的最简单方法是使用MemoryStream类:
Stream stream = new MemoryStream(byteArray);
stream.ToArray()如果您想让字节数组返回,您仍然可以使用。
您正在寻找MemoryStream.Write方法。
例如,以下代码会将byte[]数组的内容写入内存流:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream();
stream.Write(myByteArray, 0, myByteArray.Length);
或者,您可以基于字节数组创建一个新的,不可调整大小的MemoryStream对象:
byte[] myByteArray = new byte[10];
MemoryStream stream = new MemoryStream(myByteArray);
MemoryStream.Write是要比后者消耗更多的内存new MemoryStream(myByteArray)
MemoryStream默认情况下,缓冲区中分配了额外的空间(就像列表一样)。这可以通过使用允许设置容量的重载轻松解决,但是仅在不希望向流中写入任何数据(或者如果您知道可能需要多少额外的字节)时才真正有用。 )。但是我怀疑jitbit可能指的是以下事实:使用byte[]构造函数时,不会复制数组- MemoryStream引用参数中的数组。这可以是好事也可以是坏事,这有点可惜,MSDN上没有记录它:)
看MemoryStream课。