如何使用BinaryReader类使用C#读取自定义文件(C++)

本文关键字:文件 自定义 C++ 读取 BinaryReader 何使用 | 更新日期: 2023-09-27 18:25:56

好吧,对于一个个人项目,我的任务是编写一个工具,以使用从C++使用C#序列化的自定义文件。

我曾想过使用BinaryReader类,实际上这是正确的路径,但由于我怀疑如果没有用于序列化文件的结构,我就无法获得任何有用的信息,所以我请求使用它们。问题是,我收到的信息是两个包含所有qint32字段的结构名称(是的,它们使用Qt库)。

老实说,我完全不明白这一点,我也想知道qint32是否是Qt的int32表示,或者它是否与之有效不同

谨致问候。

如何使用BinaryReader类使用C#读取自定义文件(C++)

根据这个问答,qint32的长度为32位。

这意味着您可以使用BinaryReader.ReadInt32()读取数字,假设它们是小端序。

qglobal.h中qint32的定义如下:

typedef int qint32;                /* 32 bit signed */

C++标准没有指定数字的endianness,相反,编译程序的体系结构是这样做的。x86和x64处理器是little-endian。注意,可以改变数字的字节序(例如,通过使用htonl函数)。为了得到一个明确的答案,你应该询问生成文件的人。