Нужно открыть и прочитать .bin файл в Python.Получение ошибки: кодек utf-8 'не может декодировать байт 0x81 в позиции 11: неверный стартовый байт - PullRequest
0 голосов
/ 31 января 2019

Я пытаюсь прочитать и преобразовать двоичный файл в текст, который может прочитать каждый.У меня возникли проблемы с сообщением об ошибке: кодек «utf-8» не может декодировать байт 0x81 в позиции 11: недопустимый начальный байт

Я прошел: Чтение двоичного файла и зацикливание каждого байта Попытка нескольких версий, попытка каким-либо образом открыть и прочитать двоичный файл.Прочитав об этом сообщении об ошибке, большинство людей либо имели проблемы с файлами .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)

Я ожидаю, что смогу читать и записывать в двоичный файл.Я хотел бы перевести его в шестнадцатеричный формат, а затем в текст (или каким-то разборчивым текстом), но я думаю, что должен пройти этот шаг раньше.Если бы кто-нибудь мог помочь с тем, чего мне не хватает, это было бы очень признательно!Любой способ открыть и прочитать двоичный файл будет принят.Спасибо за ваше время!

1 Ответ

0 голосов
/ 05 февраля 2019

Я не уверен, но это может помочь:

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

...