将 int 数组 (Int32[]
) 的二进制表示写入 Stream
的最佳方法是什么?
Stream.Write
只接受 byte[]
作为源,我想避免将数组转换/复制到 byte[]
(数组,而是直接从“原始位置”流式传输)。
在更面向系统的语言(又名 C++)中,我会简单地将 int 数组转换为 byte*
但据我所知,这在 C# 中是不可能的(此外,转换byte*
到 byte[]
两种方式都行不通)
谢谢
马丁
PS:实际上,我也想流式传输单个 int
值。使用 BinaryConverter.GetBytes()
是否会创建一个新的字节数组?在这种情况下,我将问题扩展到如何有效地流式传输单个 int
值 ...
最佳答案
最简单的选择是使用 BinaryWriter
包装你的输出流,然后调用 Write(int)
对于每个 int
值。如果这不适合您,您可以使用我的 MiscUtil 中的 EndianBinaryWriter
图书馆。
我不知道有什么内置的东西可以更有效地做到这一点......我希望流中的缓冲能够在很大程度上处理它。
关于c# - 在 .NET 中将 Int 数组写入 Stream,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3651992/