我需要編寫一個小工具來解析文本輸入並生成一些二進制編碼數據。我寧願遠離C等,以支持更高的水平,(可選)更安全,更富有表現力和更快地開發語言。適當的高級語言來處理二進制數據
我對這種任務選擇的語言通常是Python,但對於這種情況處理二進制原始數據可能會有問題,如果一個不小心與數字被晉升爲大數,簽署擴展和這樣。
理想情況下,我想有一個名爲位域是便攜以一致的方式被序列化的記錄。
(我知道,有在我已經掌握一門語言做一個支撐點,但它是不是最優的,但我認爲這可能是學習新東西的好機會)。
謝謝。
我需要編寫一個小工具來解析文本輸入並生成一些二進制編碼數據。我寧願遠離C等,以支持更高的水平,(可選)更安全,更富有表現力和更快地開發語言。適當的高級語言來處理二進制數據
我對這種任務選擇的語言通常是Python,但對於這種情況處理二進制原始數據可能會有問題,如果一個不小心與數字被晉升爲大數,簽署擴展和這樣。
理想情況下,我想有一個名爲位域是便攜以一致的方式被序列化的記錄。
(我知道,有在我已經掌握一門語言做一個支撐點,但它是不是最優的,但我認爲這可能是學習新東西的好機會)。
謝謝。
奇怪的是,我認爲二郎可能適合該法案。忽略,除非你想使用它們,平行的設施,它有非常容易處理字符串的本地設施。根據術語位語法檢查文檔。
我第二次投票給Erlang;儘管它很古怪,但它對二進制數據的位級控制具有出色的支持。 (因爲它必須;這是一個電信語言)另一個值得研究的語言是PADS,這是一種比較特殊用途的語言(也來自電信行業)專爲特設數據高速處理。我相信PADS支持二進制數據,但我不能發誓。
如果你想留在Python中的一個選項是bitstring模塊,它最需要處理二進制數據的痛苦了。
構造和解析任意二進制結構非常簡單,所以如果Erlang不適合你,可能值得一看!
IMP,僅使用您已知的語言會更快。除非你想爲了樂趣而學習一些新的語言。
C的結構是主流了這樣的事情之一。如果您不喜歡其他語言,您可以使用C語言定義數據格式,並使用Python定義所有的訪問代碼,並用SWIG填補差距。我沒有太多使用SWIG,所以我不知道你能做多少工作。如果你不能在Python中完成所有的代碼,你可以在C語言中使用一些比特(WriteStructToFile等),因爲它們可以非常小且明確定義。
對於這類低級數據表示形式,Ada對您所描述的這種低級數據表示形式提供了很大支持,其格式爲表示子句表示數據類型。例如見
http://www.adaic.org/standards/05rm/html/RM-13-5-1.html
隨着表示子句也可以定義確切的佈局和走線(如果需要)爲您的所有數據,在便攜時尚。類似地,例如出於性能目的而改變表示是非常容易的,例如,使用存儲爲位對機器可尋址單詞的布爾值。
好主意,我正在考慮學習Erlang,所以這可能是完美的:-D BTW,解析怎麼樣,它有體面的字符串處理或解析器生成器嗎? – fortran 2010-04-22 15:58:02
引用Joe Armstrong的bool(如果你打算學習Erlang,這是非常寶貴的)「嚴格地說,Erlang中沒有字符串。字符串實際上只是整數列表。'從這我得出結論,它確實有體面的字符串處理,但你可以另外決定。至於解析器生成器,我不知道。 – 2010-04-22 16:15:27