如何在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
课。