前端之家收集整理的这篇文章主要介绍了
C#,从二进制文件中读取结构,
前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想从二进制
文件中读取结构.
在C中,我会这样做:
stream.read((char*)&someStruct,sizeof(someStruct));
在C#中是否有类似的方式? BinaryReader仅适用于内置类型.在.NET 4中有一个MemoryMappedViewAccessor.它提供了诸如Read< T>之类的方法.这似乎是我想要的,除了我手动必须跟踪我想要阅读的文件中的位置.
有没有更好的办法?
可以在C#中执行类似的操作,但是您必须将大量
属性应用于结构,以便您可以精确控制它在内存中的布局方式.默认情况下,JIT编译器控制结构成员在内存中的布局方式,这通常意味着考虑到速度和内存使用情况,它们会重新排列并填充以实现最高效的布局.
最简单的方法通常是使用BinaryReader读取文件中结构的单独成员,并将值放在类的属性中,即手动将数据反序列化为类实例.
通常它正在读取此操作中的瓶颈文件,因此读取单独成员的小开销不会显着影响性能.
原文链接:https://www.f2er.com/csharp/98130.html