2013-07-13 53 views
1

我对C语言很少有经验,所以如果我说的话没有意义,我会提前道歉。从Python中的文件中读取C结构

我正在研究一个项目,其中我的整个代码库都是用python 2.7编写的。我在一个地步,我必须由其他人创建的数据是谁在使用C.他给了我由一个头结构,如每个数据文件读取...

struct Header { 
    int32_t x1; 
    int32_t x2; 
    . 
    . 
    . 
}; 

这随后是一组相同格式的结构数组,每个数组包含模拟中单个元素的数据。

有没有办法用python读取这些数据?这似乎是我需要使用python的结构模块,但我已经通过文档阅读,或者我找不到我需要或不知道如何使用它。

谢谢!

+0

你尝试了什么,什么不起作用?你是对的,你想使用'struct'模块。 –

+0

另一种方法是'ctypes'模块,但这更难理解(但更灵活) –

+0

您还需要考虑源代码和目标代码的差异...... – dawg

回答

0

看看要么struct模块pack & unpack功能或​​模块 - 要么将你理清哪个更好取决于几个因素,numpy还包括函数来读取“外星人”的数据,可以帮助..

+0

我之前使用过结构模块的解包函数来自二进制文件的数据,我刚刚尝试以类似的方式使用它来读取这些数据。例如,要读入我最初发布的头文件中的第一部分数据,我只需使用解包将其读入为4字节的整数。这给了我无意义的价值,但是,这使我相信我正在阅读的数据不是我想要的数据。我假设有一些格式化或字节填充的C结构保存的方式,我没有考虑到。如果是这样,我可以在哪里找到这件事?谢谢! – user2579664

+0

是来自windows还是unix机器的数据,你运行的是否相同 - 如果endian不同,则需要在解包字符串中设置该值,同样也需要填充。 –

+0

数据是在我用来解压它的同一个unix群集上创建的。 – user2579664