2014-10-08 23 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