我需要编写一个小工具来解析文本输入并生成一些二进制编码数据。我宁愿远离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