【问题标题】:binary file containing C data structure access with python [closed]包含使用 python 访问 C 数据结构的二进制文件 [关闭]
【发布时间】:2013-09-19 18:20:02
【问题描述】:

我有一个二进制文件,其中的数据填充了“C”数据结构。我想使用 Python 访问它。我在 python 中看到了一些关于struct 的帖子。但是,我无法清楚地了解如何根据我的要求使用它。任何帮助将不胜感激。


This is what i Wanted

import struct


def write():
    values = (3 , 'name' , 6.6)
    s = struct.Struct('i4sf')   
    packed_data = s.pack(*values)

    fname = '123.sample'
    f = open(fname , 'wb')
    f.write(packed_data)
    f.close()


def read():
    fname = '123.sample'
    f = open(fname , 'rb')
    data = f.read()

    data_val = struct.unpack('i4sf' , data)

    print data_val

【问题讨论】:

  • struct 模块一直用于这种事情。要获得有用的答案,您必须展示定义 C struct 的 C 代码。
  • @TimPeters 这是蒂姆·彼得斯吗?
  • @AnuragUniyal,这取决于您心目中的 Tim Peters - 哈哈。但是,是的,可能 ;-)
  • @TimPeters 我的意思是“导入这个”
  • 我已经用答案编辑了这个问题。这就是我想要的

标签: python c


【解决方案1】:

这是一个非常笼统的问题,struct module 提供了打包和解包二进制数据的方法,如果你知道正确的格式,你可以使用 struct format 来表示它并解包它。例如打包和解包一个无符号的短和一个字符使用这个:

>>> import struct
>>> data = struct.pack('Hc',255, 'a')
>>> struct.unpack('Hc', data)
(255, 'a')

所以请通过struct module docs,尝试解压您的数据,如果您遇到困难,您可以提出具体问题。

【讨论】:

  • 谢谢@anurag 我已经添加了我需要的样本。感谢您的帮助。
  • @rakesh 看起来您使用正确,请问有什么问题?
  • 。我现在没有任何问题,我终于发现了。我刚刚发布了我的答案。
猜你喜欢
  • 1970-01-01
  • 2016-11-20
  • 2023-03-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-04-23
  • 2014-05-18
  • 1970-01-01
相关资源
最近更新 更多