python - 将 hex 文件转换为 bin 文件

标签 python

我是一名新手程序员,也是 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/

相关文章:

python - 在 keras 层中指定 `input_shape` 时,Tensorflow 2.0 泄漏内存

python - Python-如何在两个方向上对自己的类执行操作?

python - 在 Python 程序中打印两点之间的时间

python - WTForm "OR"条件验证器? (电子邮件或电话)

python - 对于相同的代码,在 CodeSkulptor 上得到错误的答案

python - scrapy没有选择下拉选项

python - 统一码编码错误 : 'cp949' codec can't encode character '\u20a9' in position 90: illegal multibyte sequence

python - 我应该如何在 Ubuntu 14.04 上升级 pip?

python - 将 python cgi.print_environ() 和 cgi.print_form() 的输出写入文件

Python win32api 发送消息