如何直接在C#中将托管流读入uint数组?

我在流中有一些实际上是uint格式的数据。 System.IO.Stream只允许我将内容读出到字节数组,但我不想读取字节,然后将它们转换为字节数组长度的1/4的uint数组。我想直接将它读入uint数组的内存中,以便节省时间。 如果它处于非托管C ++中,那就太容易了。只需将指针发送到uint数组即可完成。但在C#中它看起来并不那么简单。我正在尝试生成一个与另一个uint数组具有相同内存地址的字节数组,然后将该字节数组作为Stream.Read()的参数发送,这样当Stream.Read()写入字节数组时,内容就是在uint数组中也是如此。但是我看过Marshall课程,到目前为止还找不到解决这个问题的方法。有任何想法吗?     
已邀请:
List<UInt32> array = new List<UInt32>();
System.IO.BinaryReader reader = new System.IO.BinaryReader(stream);
while(stream.Position < stream.Length)
   array.Add(reader.ReadUInt32());
请注意,某些流实现不支持位置和/或长度属性。     
我想(是的,这是另一个懒惰的建议类型的帖子,没有人们发布的代码,试图在他们的备用5分钟内获得代表)你可以使用
unsafe
关键字在C#中使用相同的技术 - 这可以让你弄乱指针并按原样访问内存。 当然,根据你的数据,我建议只是以更慢效率的方式做到这一点 - 不安全的代码并不是那么漂亮 - 你需要额外的安全性和安全性。时间来测试。     

要回复问题请先登录注册