3

我有我需要傾倒某種文本格式,編輯,然後重新編譯(可能略有不同版本的二進制格式的)各種二進制文件格式。當然,我可以寫一堆的C/C++做這種事情實用代碼,也許利用了事物的文字側(XML或JSON或其他)圖書館,但是這是保持種植了任務模式在我的工作中,在我看來,可能應該已經存在某種用於這種工作的通用工具。用於編譯/反編譯二進制數據文件的通用實用程序或庫?

很明顯,需要某種方式來描述二進制文件格式 - 一種模式或一些這樣的 - 這將需要支持所有顯而易見的數據類型(字符串,各種大小的整數,布爾等,浮點數將是很好),以及諸如計數字段,長度字段,填充/對齊等等,以處理您在數據文件中找到的所有典型內容。支持字節序支持也是有用的,因爲二進制文件可能與我們運行的平臺有不同的字節順序。

我會很驚訝,如果這樣的事情已經不存在,但我有沒有運氣通過谷歌迄今(你怎麼甚至描述了這樣一個實用程序或庫簡潔?)。我記得最近看到的是蘋果公司的資源編譯器/反編譯器公用程序,它們在「Classic」Mac OS時代就已經出現。它們使用類C語法,頭文件中的資源模板定義用於描述各種二進制資源的格式,並且可以在此C類源語法和二進制資源之間進行編譯/反編譯。

回答

5

BinX,二進制XML描述語言,再加上相應的庫,似乎適合你的目的。

也感興趣的可能是Practical Common Lisp書,它演示瞭如何寫一個庫中150線的Lisp代碼中(二進制)MP3文件解析ID3標籤的Chapter 24. Practical: Parsing Binary Files。 *

*現在,我可能不會使用Lisp的,但像Clojure一個更現代的函數式語言。例如,參見Reading binary data in Clojure

P.S. binary data librarybinary data file library是Google的良好關鍵字。

+0

非常好 - 謝謝 - BinX看起來正是我所需要的。我很高興我沒有參與進來,從頭開始編寫這些東西。 ;-) – 2010-01-27 14:52:18

+0

糟糕 - 即將發表 - BinX似乎有一些限制性許可。我想我必須繼續尋找。無論如何感謝... – 2010-01-27 15:04:43

+0

這裏有一個開源版本:http://www.edikt.org.uk/binx/licence_open.html。 – 2010-01-27 16:35:48

2

Mac App Store中的「SynalyzeIt」可能值得一看...

+0

謝謝 - 這看起來像一個偉大的工具,也是免費的!我現在只是下載它... – 2011-07-09 14:41:16