C#,从二进制文件中读取结构

前端之家收集整理的这篇文章主要介绍了C#,从二进制文件中读取结构前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从二进制文件中读取结构.
在C中,我会这样做:
stream.read((char*)&someStruct,sizeof(someStruct));

在C#中是否有类似的方式? BinaryReader仅适用于内置类型.在.NET 4中有一个MemoryMappedViewAccessor.它提供了诸如Read< T>之类的方法.这似乎是我想要的,除了我手动必须跟踪我想要阅读的文件中的位置.
有没有更好的办法?

解决方法

可以在C#中执行类似的操作,但是您必须将大量属性应用于结构,以便您可以精确控制它在内存中的布局方式.默认情况下,JIT编译器控制结构成员在内存中的布局方式,这通常意味着考虑到速度和内存使用情况,它们会重新排列并填充以实现最高效的布局.

最简单的方法通常是使用BinaryReader读取文件中结构的单独成员,并将值放在类的属性中,即手动将数据反序列化为类实例.

通常它正在读取此操作中的瓶颈文件,因此读取单独成员的小开销不会显着影响性能.

猜你在找的C#相关文章