我是一名新手程序员,也是 Python 新手。我必须使用旧版本 2.5.2,用于我在工作中分配的项目。我得到了如下所示的代码,它采用十六进制输入文件并提取部分十六进制文件并将其写入输出文件。问题是现在应该将其转换为二进制文件。我一直在寻找几种不同的方法来做到这一点,但没有找到任何有效的方法。我想尽可能地使用我拥有的代码,以避免重写和调试。作为初学者,这是一个很大的问题,但也许没有办法解决这个问题?我希望我可以简单地获取完成的十六进制文件并将其转换为 bin 文件。考虑到我现有的代码,这似乎不太优雅,但事实证明,尝试应用我在“将十六进制文件更改为二进制文件”下找到的 searchnig 的内容也是难以捉摸的。希望我忽略了一些微不足道的事情。任何想法或建议将不胜感激。谢谢。
import sys, os
m = open('myfile','w')
fileName = sys.argv[1]
inFile = open(fileName,'r')
objFile = inFile.readlines()
end = len(objFile)
filter_01 = 0
filter_02 = 0
filter_key = 0
ran = []
for idx, line in enumerate(objFile):
if line[:7] == '/origin':
filter_01 = idx + 1
if line[:8] == '03 00 01':
filter_02 = idx
if filter_01 == filter_02:
filter_key = filter_01 + 1
ran = range(filter_key, end)
m.write(objFile[filter_key -1][0:47])
m.write("\n")
m.write(objFile[filter_key -1][:47])
m.write("\n")
for idx in ran:
m.write(objFile[idx]),
m.close()
最佳答案
从代码来看,您的十六进制文件似乎包含由空格分隔的两个十六进制数字组,因此第一步是弄清楚如何转换像 '1d e3' 这样的十六进制字符串
转换为二进制。由于我们要将其写入文件,因此我将展示如何将其转换为 Python 字符串,其中每个字符代表一个字节(我还将展示 Python 3.x,其中有单独的字节类型):
Python 2.x:
>>> ''.join(x.decode('hex') for x in '1d e3'.split()) '\x1d\xe3'
Python 3.x:
>>> bytes(int(x, 16) for x in '1d e3'.split()) b'\x1d\xe3'
一旦有了这样的二进制字符串,您就可以将其写入文件,只需确保使用二进制模式,例如:
m = open('myfile', 'wb')
关于python - 将 hex 文件转换为 bin 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20153995/