我有一个计算矩阵的python代码,我想从C代码中使用这个矩阵(或数组或列表)。
我想从python代码中挑选矩阵,并从c代码中取消它,但是我找不到关于如何执行此操作的文档或示例。
我发现了一些关于编组数据的内容,但没有提到关于从C中删除的内容。
编辑: 评论员Peter H问我是否正在使用numpy数组。答案是肯定的。
答案 0 :(得分:5)
您可能希望使用更加标准化的内容,例如JSON。你在Python 2.6中有一个JSON模块。 C有6种不同的JSON模块。
你可能想要使用更像C的东西,比如Python struct
模块。它可以直接构建一个C兼容的对象,从而避免了酸洗和去除污渍。 http://docs.python.org/library/struct.html
答案 1 :(得分:3)
如果它只是一个矩阵,你可以把它写成CSV文件。看看Python csv模块。 http://docs.python.org/library/csv.html
答案 2 :(得分:2)
Protocol Buffers是一种以跨语言方式序列化信息的有趣方法,它也非常紧凑和快速(对C语言的支持,与C ++相反,不是发布的protobuf包的一部分,而是链接某些C ++代码可能在某些C项目中可以接受,或者可能存在第三方实现,例如protobuf-c - 请参阅here以获取其他第三方加载项的列表。
答案 3 :(得分:1)
查看Mark Pilgrim Dive Into Python中有关序列化数据的章节。他声称“pickle协议是特定于Python的;不能保证跨语言的兼容性。你可能无法使用你刚创建的pickle文件并在Perl,PHP中做任何有用的事情,Java或任何其他语言。“
也许JSON是一个更好的选择,也在该章中解释过。
答案 4 :(得分:1)
如果你绝对必须使用酸洗,你可以在你的C程序中嵌入Python,并通过Python在C中进行unpickle。
答案 5 :(得分:0)
看一下模块struct
?
答案 6 :(得分:0)
除了JSON之外,还有Google Protocol Buffers对Python,C ++和Java有“本机”支持(来自Google)以及许多与其他语言(包括C)的第三方绑定。