Pot*_*ter 10 c portability binaryfiles endianness htonl
据我所知,C库没有帮助将数值序列化为非文本字节流.如我错了请纠正我.
最常用的标准工具是htonlPOSIX等.这些功能有缺点:
用于将任意大小序列化为char8位标准字节的接口将落在C标准之间,该标准不真正确认8位字节,并且无论标准(ITU?)将八位位组设置为基本传输单位.但旧的标准没有得到修订.
现在C11有许多可选组件,可以添加二进制序列化扩展以及线程之类的东西,而不需要对现有实现提出要求.
这样的扩展是否有用,或者担心非二进制补充机器是否毫无意义?
我从未使用它们,但我认为Google的Protocol Buffers满足您的要求.
本教程似乎是一个非常好的介绍,你可以在这里阅读有关实际的二进制存储格式.
从他们的网页:
什么是协议缓冲?
协议缓冲区是Google的语言中立,平台中立,可扩展的机制,用于序列化结构化数据 - 思考XML,但更小,更快,更简单.您可以定义数据的结构化时间,然后可以使用特殊生成的源代码轻松地在各种数据流中使用各种语言(Java,C++或Python)编写和读取结构化数据.
纯C(仅限C++)中没有正式实现,但有两个C端口可能满足您的需求:
Nanopb,http: //koti.kapsi.fi/jpa/nanopb/
Protobuf-c,网址为http://code.google.com/p/protobuf-c/
我不知道它们是否存在非8位字节,但它应该相对容易找到.