AttributeError при попытке использовать метод decode () - PullRequest
0 голосов
/ 06 мая 2020

Я использую программу, которая отлично работала в python 2.7, но выдает ошибку, когда я запускаю ее с python 3. Программа декодирует строки для связи с Bluetooth.

Раздел кода:

senddata = ""
for byte in data:
    byte = str(byte)
    senddata += byte.decode ("hex")
self.controlsocket.send(senddata)

, и я получаю следующее сообщение об ошибке:

AttributeError: 'str' object has no attribute 'decode' 

1 Ответ

2 голосов
/ 06 мая 2020

Текст в текст и двоичное в двоичное кодирование были удалены (не полностью, но их сложнее использовать) в Python 3, где str имеет только encode (для преобразования из текста в двоичный) и bytes имеет только decode (для преобразования из двоичного в текст).

Чтобы преобразовать из шестнадцатеричной строки в исходные базовые байты, вы можете использовать binascii.unhexlify (переносится между 2 и 3, но требует импорта ) или bytes.fromhex (доступно только в современных Python 3, но импорт не требуется).

Вы можете по-прежнему использовать исходные двоичные кодеки в двоичные с помощью функций в codecs модуль, но обычно это не стоит того; они дают лучшие эквиваленты в документации codecs .

...