如何从C代码中解开

我有一个计算矩阵的python代码,我想从C代码中使用这个矩阵(或数组或列表)。
我想从python代码中挑选矩阵,并从c代码中取消它,但是我找不到关于如何执行此操作的文档或示例。 我发现了一些关于编组数据的内容,但没有关于从C中拆除的信息。

编辑:评论员彼得H询问我是否正在使用numpy数组。 答案是肯定的。

如果它只是一个矩阵,你可以把它写成CSV文件。 看看Python csv模块。 http://docs.python.org/library/csv.html

您可能希望使用更标准化的内容,例如JSON 。 你在Python 2.6中有一个JSON模块。 C有6种不同的JSON模块。

您可能希望使用更像C的东西,比如Python struct模块。 它可以直接构建一个C兼容的对象,从而避免酸洗和去除污渍。 http://docs.python.org/library/struct.html

协议缓冲区是一种以跨语言方式序列化信息的有趣方法,它也非常紧凑和快速(对C语言的支持,与C ++相反,不是发布的protobuf包的一部分,但在某些C ++代码中链接可能是在某些C项目中可以接受,或者可能存在第三方实现,例如protobuf-c – 请参阅此处以获取其他第三方附加组件的列表)。

查看Mark Pilgrim’s Dive Into Python中的序列化数据一章。 他声称“pickle协议是特定于Python的;不能保证跨语言的兼容性。你可能无法使用你刚创建的pickle文件,并在Perl,PHP中做任何有用的事情,Java或任何其他语言。“

也许JSON是一个更好的选择,也在该章中解释过。

如果你绝对必须使用酸洗,你可以在你的C程序中嵌入Python,并通过Python在C中取消。

  • Linux Journal的一个简单例子
  • Python文档
  • 你如何从C代码调用Python代码?

看看模块struct

除了JSON之外,还有Google协议缓冲区 ,它们具有对Python,C ++和Java的“原生”支持(来自Google)以及许多与其他语言(包括C)的第三方绑定。