[英]Human-readable binary data using Python
我的工作需要执行数学仿真,其参数来自二进制文件。 模拟器可以毫无问题地读取此类二进制文件。
但是,我需要窥视二进制文件以确保参数正是我需要的参数,而且我似乎无法做到这一点。
我想用Python编写一个脚本,该脚本允许我读取二进制文件,搜索我关心的参数并显示其值。
我对二进制文件了解的内容:
它代表简单的文本(而不是图像或soud文件)。 有一段代码可以将文件“转储”为可读格式:如果我在Emacs中打开该转储,则会发现类似以下内容:
CENTRAL_BODY = 'SUN'
所有文件只是一系列类似的说明。 我可以使用该转储代码,但我宁愿让Python那样做。
这似乎是一个非常琐碎的问题,对于您不了解该问题深表歉意。 我以为我是一个熟练的程序员!
非常感谢。
您可以将文件的内容读入内存中的字符串中:
thedata = open(thefilename, 'rb').read()
然后在其中找到一个字符串:
where = thedata.find('CENTRAL_BODY')
最后切下您关心的部分:
thepart = thedata[where:where+50] # or whatever length
和你喜欢显示它(如找到内定位字符串值thepart
的=
标志,那么第一个下面引用,那么接下来的后引号)。
听起来这个“转储”程序已经完成了您需要的工作:解释二进制文件。 我想我的方法是编写一个可以获取转储文件,提取所需参数并显示它们的python程序。
然后用类似下面的内容解析它:
myparms.py:
import sys
d = {}
for line in sys.stdin:
parts = line.split("=",2)
if len(parts) < 2:
continue
k = parts[0].strip()
v = parts[1].strip()
d[k] = v
print d['CENTRAL_BODY']
像这样使用:
转储parameters.bin | python myparms.py
您没有提到平台,也没有提供有关转储格式的详细信息,但这应该是一个起点。
如果它是二进制文件,则需要使用struct模块。 您将需要知道文件中数据的格式。 如果没有记录,则必须对其进行反向工程。
您是否有其他转储程序的源代码? 您也许可以将其移植到Python
如果我们可以看到二进制文件和相应的转储是什么样子,我们可能会更好地帮助您
您必须知道数据存储的格式; 根本没有办法解决。
如果没有书面说明,请尝试使用十六进制编辑器将其打开,并使用文本转储作为参考来研究格式。 如果您可以获取用于创建文本转储的工具的源代码,那将对您有很大帮助。
请记住,数据可能会以某种方式进行加密,例如rot13。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.