2014-10-08 86 views
-1

好吧,对于一个个人项目,我已经完成了编写一个工具的任务,以利用一个使用C#从C++序列化的自定义文件。如何使用BinaryReader类读取使用C#的自定义文件(C++)?

我想到了使用BinaryReader类,并且有效地说这是正确的路径,但由于我怀疑如果没有用于序列化文件的结构体,我无法获得任何有用的信息,所以我请求了它们。问题是,我发送的信息是2个结构名称,包含所有qint32字段(是的,他们使用Qt库)。

说实话,我完全失去了这个,我也想知道如果qint32是Qt的int32表示或如果它有效地不同。

问候。

+0

用'C++'和'Qt'标记你的问题可能会让你知道框架的人更多的结果! – David 2014-10-08 21:40:05

+0

好的,我会尽力谢谢。 – N3HL 2014-10-08 21:45:15

回答

2

根据这个question and answer a qint32是32位长。

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

从qglobal.h中为qint32的定义如下:

typedef int qint32;    /* 32 bit signed */ 

C++标准并不指定号码的字节序,而不是结构程序上确实编译。 x86和x64处理器是小端。请注意,可以更改数字的字节顺序(例如,使用htonl函数)。为了得到明确的答案,你应该问问谁生成了这个文件。

+0

[endianness]怎么样(http://en.wikipedia.org/wiki/Endianness)?是否一样?.. – 2014-10-08 21:59:01

+0

@ L.B我添加了一些更多信息。如果它来自x86或x64机器,则可能是小端。 – Steve 2014-10-08 22:14:20

+0

好的,谢谢我会试一试! – N3HL 2014-10-08 22:22:51