2

我在流中有一些数据,实际上是 uint 格式。System.IO.Stream 只允许我将内容读取到字节数组中,但我不想读取字节然后将它们转换为字节数组长度的 1/4 的 uint 数组。我想将它直接读入 uint 数组的内存中,这样可以节省时间。

如果它在非托管 C++ 中,那就太容易了。只需将指针发送到 uint 数组即可。但在 C# 中,它似乎并不那么简单。我正在尝试生成一个与另一个 uint 数组具有相同内存地址的字节数组,然后将字节数组作为 Stream.Read() 的参数发送,这样当 Stream.Read() 写入字节数组时,内容就是在 uint 数组中也是如此。但是我查看了 Marshall 课程,到目前为止还没有找到解决这个问题的方法。有任何想法吗?

4

1 回答 1

3
List<UInt32> array = new List<UInt32>();
System.IO.BinaryReader reader = new System.IO.BinaryReader(stream);
while(stream.Position < stream.Length)
   array.Add(reader.ReadUInt32());

请注意,某些流实现不支持 Position 和/或 Length 属性。

于 2010-01-13T10:12:41.583 回答