如何从C代码中反序列化
我有一段Python代码用来计算一个矩阵,我想在C代码中使用这个矩阵(或者说数组、列表)。
我想把这个矩阵从Python代码中“打包”(也就是pickle),然后在C代码中“解包”(unpickle),但是我找不到相关的文档或例子来说明怎么做。
我看到了一些关于数据传输的内容,但没有找到关于如何在C中解包的资料。
编辑: 评论者Peter H问我是否在使用numpy数组。答案是肯定的。
7 个回答
2
协议缓冲区是一种有趣的方法,可以用来在不同编程语言之间传递信息,而且这种方式既紧凑又快速(虽然发布的protobuf包不支持C语言,但在一些C项目中链接一些C++代码可能是可以接受的,或者也可以使用一些第三方实现,比如protobuf-c -- 你可以在这里找到其他第三方插件的列表)。
5
你可以考虑使用一些更标准的格式,比如JSON。在Python 2.6中,你可以找到一个JSON模块。而在C语言中,有6个不同的JSON模块。
如果你想用更像C语言的方式,可以试试Python的struct
模块。这个模块可以直接构建一个与C语言兼容的对象,这样你就不需要进行序列化和反序列化了。你可以在这里查看详细信息:http://docs.python.org/library/struct.html
3
如果你只是想处理一个矩阵,可以把它写成一个CSV文件。你可以看看Python的csv模块,里面有相关的内容。http://docs.python.org/library/csv.html