如何用Python将BIN文件转换为十进制并保存为TXT文件?
如何将BIN文件转换为十进制数据并保存到TXT文件?
你之前的代码其实踩了个小坑:当你把读取到的bytes对象直接转成str时,得到的是它的字符串表示形式(比如b'\x14\x12...'这种带b''的格式),之后用ord(c)取的是这个字符串里每个字符的ASCII码,而不是原始二进制字节本身的十进制值——这就是为什么你会看到98(对应字符'b')、39(对应单引号)这些和原始数据无关的数值。
要正确转换并保存,我们直接处理二进制字节本身就好,步骤很简单:
正确实现代码
情况1:读取整个BIN文件并转换
如果需要把整个BIN文件的内容都转成十进制保存:
# 读取二进制文件 with open("atb.bin", "rb") as bin_file: # 一次性读取所有二进制数据 binary_data = bin_file.read() # 遍历每个字节,直接得到对应的十进制整数 decimal_values = [byte for byte in binary_data] # 把整数列表转成空格分隔的字符串 decimal_str = ' '.join(map(str, decimal_values)) # 将结果写入TXT文件 with open("output.txt", "w") as txt_file: txt_file.write(decimal_str)
情况2:按固定字节数读取(比如你原来的8字节)
如果只需要读取指定长度的字节(比如你之前的8字节),可以修改读取部分:
with open("atb.bin", "rb") as bin_file: # 读取8字节的二进制数据 binary_data = bin_file.read(8) decimal_values = [byte for byte in binary_data] decimal_str = ' '.join(map(str, decimal_values)) with open("output.txt", "w") as txt_file: txt_file.write(decimal_str)
效果说明
拿你提供的b'\x14\x12\x1c\x1a#\x00-d'来说,用上面的代码转换后,得到的十进制值会是:20 18 28 26 35 0 45 100,这就是原始二进制字节对应的正确十进制数值,会直接写入到output.txt文件里。
内容的提问来源于stack exchange,提问作者Aj Mv
相关产品推荐
相关产品推荐

