加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 18:18:38 所属栏目:百科 来源:网络整理
导读:我想从二进制文件中读取结构. 在C中,我会这样做: stream.read((char*)someStruct,sizeof(someStruct)); 在C#中是否有类似的方式? BinaryReader仅适用于内置类型.在.NET 4中有一个MemoryMappedViewAccessor.它提供了诸如Read T之类的方法.这似乎是我想要的,
我想从二进制文件中读取结构.
在C中,我会这样做:
stream.read((char*)&someStruct,sizeof(someStruct));

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

解决方法

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

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读