在.NET中将Int数组写入Stream

时间:2010-09-06 13:52:12

标签: c# .net binary stream

将int数组(Int32[])的二进制表示写入Stream的最佳方法是什么?

Stream.Write仅接受byte[]作为来源,我希望避免将数组转换/复制到byte[](数组,而是直接从'原始位置'直接流式传输)。< / p>

在一个更面向系统的语言(又名C ++)中,我只是将int数组转换为byte*,但就我所知,C#是不可能的(此外,转换byte* } byte[]无论如何都无法解决问题)

由于

马丁

PS:实际上,我还希望流式传输单个int值。使用BinaryConverter.GetBytes()创建一个新的字节数组吗?在这种情况下,我将问题扩展到如何有效地传输单个int值......

2 个答案:

答案 0 :(得分:12)

最简单的选择是使用BinaryWriter包装输出流,并为每个int值调用Write(int)。如果您没有使用正确的字符序列,则可以使用MiscUtil库中的EndianBinaryWriter

我不知道有什么内置的内容可以更有效地执行此操作...我希望流中的缓冲可以在很大程度上处理它。

答案 1 :(得分:3)

System.Array和System.Int32都具有Seri​​alizableAttribute,因此它们都支持可检索格式的默认序列化。

http://msdn.microsoft.com/en-us/library/system.serializableattribute.aspx

这里有二进制输出和回读的示例代码:

http://msdn.microsoft.com/en-us/library/aa904194(VS.71).aspx