将int数组(Int32[]
)的二进制表示写入Stream
的最佳方法是什么?
Stream.Write
仅接受byte[]
作为来源,我希望避免将数组转换/复制到byte[]
(数组,而是直接从'原始位置'直接流式传输)。< / p>
在一个更面向系统的语言(又名C ++)中,我只是将int数组转换为byte*
,但就我所知,C#是不可能的(此外,转换byte*
} byte[]
无论如何都无法解决问题)
由于
马丁
PS:实际上,我还希望流式传输单个int
值。使用BinaryConverter.GetBytes()
创建一个新的字节数组吗?在这种情况下,我将问题扩展到如何有效地传输单个int
值......
答案 0 :(得分:12)
最简单的选择是使用BinaryWriter
包装输出流,并为每个int
值调用Write(int)
。如果您没有使用正确的字符序列,则可以使用MiscUtil库中的EndianBinaryWriter
。
我不知道有什么内置的内容可以更有效地执行此操作...我希望流中的缓冲可以在很大程度上处理它。
答案 1 :(得分:3)
System.Array和System.Int32都具有SerializableAttribute,因此它们都支持可检索格式的默认序列化。
http://msdn.microsoft.com/en-us/library/system.serializableattribute.aspx
这里有二进制输出和回读的示例代码:
http://msdn.microsoft.com/en-us/library/aa904194(VS.71).aspx