我有一個程序,它將結果文件保存在一個二進制文件中。在程序中也可以將結果文件導出爲XML格式。翻譯回一個未知的二進制文件!?可能嗎?
由於程序本身在瀏覽其結果時很不便,我自己編寫了一個程序來讀取這個結果文件,但顯然使用了XML格式。
問題是,從二進制文件導出的XML文件是巨大的!而原始程序可以使用的二進制文件大約爲100 KB,導出到XML的文件大約爲2〜3 MB。
我想知道有沒有一種方法可以找出如何閱讀原始二進制文件!
我有一個程序,它將結果文件保存在一個二進制文件中。在程序中也可以將結果文件導出爲XML格式。翻譯回一個未知的二進制文件!?可能嗎?
由於程序本身在瀏覽其結果時很不便,我自己編寫了一個程序來讀取這個結果文件,但顯然使用了XML格式。
問題是,從二進制文件導出的XML文件是巨大的!而原始程序可以使用的二進制文件大約爲100 KB,導出到XML的文件大約爲2〜3 MB。
我想知道有沒有一種方法可以找出如何閱讀原始二進制文件!
要從二進制文件中獲取數據,您需要知道它的結構。如果你不知道結構,我認爲這將是一個無望的努力。 xml文件非常大,因爲它包含除了數據之外的結構。你可以閱讀並解釋它。
如果程序源代碼不可用,則需要閱讀程序源代碼 - 在ILDASM或Reflector中打開該程序,並嘗試瞭解如何創建二進制文件。可能這是使用二進制序列化完成的。
您可以定義自己的類型,它們是原始類型的精確副本,包括序列化屬性,並使用二進制序列化來加載它們。
但是,第三方文件格式的每一項變化都可能要求您更改程序。我認爲使用XML更好。
2-3MB XML有什麼問題?您可以將其讀入內存中,然後使用LINQ來查詢它。你可以閱讀二進制文件 - 沒問題,但是除非你知道如何保存,否則你不可能恢復原始對象。 – oleksii 2011-12-15 13:20:24
你問如何反序列化由同一個應用程序寫入二進制文件的二進制文件? – 2011-12-15 13:21:26