需要打开和读取Python中的.bin文件。收到错误:在第11位UTF-8' 编解码器不能解码字节0×81:无效的起始字节

问题描述 投票:1回答:1

我试图读取并转换成二进制文本,任何人都可以阅读。我有麻烦的错误消息:在位置11“UTF-8”编解码器不能解码字节0×81:无效的起始字节

我已经遍及:Reading binary file and looping over each byte努力试图打开并阅读在某种程度上二进制文件的多个版本。阅读有关此错误消息后,多数人要么不得不以将该.cvs文件的麻烦,或者不得不为UTF-8更改为-16。但在https://en.wikipedia.org/wiki/UTF-16#Byte_order_encoding_schemes阅读起来,Python不使用-16了。

此外,如果我添加编码= UTF-16/32,错误状态:二进制模式并不需要的编码参数

这里是我的代码:

with open(b"P:\Projects\2018\1809-0068-R\Bin_Files\snap-pac-eb1-R10.0d.bin", "rb") as f:
    byte = f.read(1)
    while byte != b"":
        byte = f.read(1)
print(f)

我期待着能够读取和写入二进制文件。我想翻译为十六进制,然后到文本(或易读的文本以某种方式),但我想我有之前要经过这一步。如果任何人都可以与我缺少什么帮助,将不胜感激!任何方式打开和读取二进制文件将被接受。感谢您的时间!

python-3.x hex binaryfiles
1个回答
0
投票

我不知道,但是这可能帮助:

import binascii

with open('snap-pac-eb1-R10.0d.bin', 'rb') as f:
    header = f.read(6)

b = bytearray(header)

binary=[bin(i)[2:].zfill(8) for i in b]

n = int('0b'+''.join(binary), 2)
nn = binascii.unhexlify('%x' % n)

nnn=nn.decode("ascii")[0:-1]

result='.'.join(str(ord(c)) for c in nnn[0:-1])

print(result)

输出:

16.0.8.0

© www.soinside.com 2019 - 2024. All rights reserved.