<分区>
你能推荐一个经过验证的 C 二进制流解析库吗?如果它像 C 语言所允许的那样具有声明性,那就太好了。
我需要它来解析二进制协议(protocol)并通过它的正式规范来描述相当复杂的协议(protocol),这就是为什么我希望它尽可能多地声明。就像是 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。