请问有没有C语言可靠的二进制流解析库推荐?如果能够像C语言声明式那样就更好了。
我需要用它来解析二进制协议,并通过协议的正式规范描述相当复杂的协议,因此希望它尽可能地声明式。类似于Haskell的Data.Binary.Get就很不错。
我找到了binpac,但它似乎很重量级,而且是面向C ++的,但该项目是纯C的。
以下是我所说的示例:
parser_t parsers[] = {
{ get_bit, out_field1, &pkt.field1 }
,{ get_bit7, 0, 0 } // skip 7 bits
,{ get_word16be, out_field2, &pkt.field2 }
,{ 0, 0, 0 } // end
};
// skip
// char *data, char *data_end,
map_parsers(data, data_end, parsers); // parse stream
更新:仅拥有一个快速的库以从内存中顺序读取位、字、对齐、不对齐等内容是可以的。我可能会自己编写声明性前端甚至DSL。