我想在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文件中?
答案 0 :(得分:0)
你的主要错误是:
datastring = str(data)
因为它将data
对象的表示转换为字符串,b
前缀和引号,并且转义... 错误。
在您执行操作时阅读您的文件:
with open("atb.bin", "rb") as file:
data = file.read(8)
现在data
是bytes
对象,在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