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

如何在C#中直接将托管流读入uint数组?,c#,stream,marshalling,managed,unmanaged-memory,C#,Stream,Marshalling,Managed,Unmanaged Memory,我在流中有一些数据,实际上是uint格式的。System.IO.Stream只允许我将内容读出到字节数组,但我不希望读取字节,然后将其转换为字节数组长度为1/4的uint数组。我想把它直接读入uint数组的内存,这样可以节省时间 如果它在非托管C++中,那么简单。只要将指针发送到uint数组,就可以了。但在C#中,这似乎并不那么简单。我试图生成一个字节数组,该数组的内存地址与另一个uint数组相同,然后将字节数组作为Stream.Read()的参数发送,这样当Stream.Read()写入字节数

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

如果它在非托管C++中,那么简单。只要将指针发送到uint数组,就可以了。但在C#中,这似乎并不那么简单。我试图生成一个字节数组,该数组的内存地址与另一个uint数组相同,然后将字节数组作为Stream.Read()的参数发送,这样当Stream.Read()写入字节数组时,内容也就在uint数组中。但我看过马歇尔班,到目前为止还没有找到解决这个问题的办法。有什么想法吗?

列表数组=新列表();
List<UInt32> array = new List<UInt32>();
System.IO.BinaryReader reader = new System.IO.BinaryReader(stream);
while(stream.Position < stream.Length)
   array.Add(reader.ReadUInt32());
System.IO.BinaryReader=新的System.IO.BinaryReader(流); while(stream.Position
请注意,某些流实现不支持位置和/或长度属性。

通常正确,但在这种情况下,从OQ中可以事先知道长度。如果确实找不到直接解决方案,那么这可能是我的最后一种手段。