Python ..将bin / hex文件转换为txt文件

时间:2018-04-05 15:21:06

标签: python

我想在python中将bin文件转换为txt文件。

with open("atb.bin", "rb") as file:

     data = file.read(8)

datastring = str(data)

print(datastring)
print(' '.join(str(ord(c)) for c in datastring))

我得到的输出是

b'\x14\x12\x1c\x1a#\x00-d'
98 39 92 120 49 52 92 120 49 50 92 120 49 99 92 120 49 97 35 92 120 48 48 45 100 39

现在,如何将其转换为十进制并存储在txt文件中?

2 个答案:

答案 0 :(得分:0)

你的主要错误是:

datastring = str(data)

因为它将data对象的表示转换为字符串,b前缀和引号,并且转义... 错误

在您执行操作时阅读您的文件:

with open("atb.bin", "rb") as file:
     data = file.read(8)

现在databytes对象,在python 3中不需要ord,值已经是整数。现在打开一个文本文件并转储值(将整数转换为字符串,十进制):

with open("out.txt", "w") as f:
   f.write(" ".join(map(str,data))):
   f.write("\n")

在python 2中,您需要获取字符代码然后转换为字符串:

   f.write(" ".join([str(ord(c)) for c in data]))

答案 1 :(得分:0)

您的Python会转换为文本,即文件中8个字符的文本表示。

因此,而不是

print(' '.join(str(ord(c)) for c in datastring))

你应该放

print(' '.join(str(ord(c)) for c in data))

然后您可以使用标准技术写入文件。

即。 (Python 2)

>>> data=b'\x14\x12\x1c\x1a#\x00-d'
>>> print(' '.join(str(ord(c)) for c in data))
20 18 28 26 35 0 45 100

(Python 3)

>>> data=b'\x14\x12\x1c\x1a#\x00-d'
>>> print(' '.join(str(c) for c in data))
20 18 28 26 35 0 45 100