Как мне преобразовать двоичные байты в строку в Python 3? - PullRequest
0 голосов
/ 17 января 2019

У меня в сокет поступают некоторые двоичные данные, отправленные сервером, сервер написан на C ++. он отправляет двоичные данные, такие как: 0x10, 0x20, 0x18, 0xAA и т. д.

В Python 2 я имел обыкновение получать данные и добавлять их в строку, но теперь в Python 3 я получил байтовый массив, как мне преобразовать его в строку?


декодирование ('utf-8') не работает, вот мой оригинальный код:

reply_string = "" while bytes_read < reply_length:
    chunk = s.recv(4096)
    reply_string += chunk.decode('utf-8')

s - сокет, ошибка, которую я получил:

UnicodeDecodeError: кодек «utf-8» не может декодировать байт 0xf7 в позиции 116: недопустимый начальный байт

Сервер написан на C ++, он не отправляет Unicode, он просто читает содержимое двоичного файла и отправляет его обратно клиенту, выше приведен код клиента.

1 Ответ

0 голосов
/ 17 января 2019

Хорошо, так что если предположить, что строка в UTF-8, то все просто:

try:
    binary_data.decode('utf-8', errors='strict')
except UnicodeError as e:
    # Handle the error here

Этот код должен отлавливать любые возникающие ошибки, и вы можете обрабатывать их оттуда.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...