байт ('\ xFF', 'utf-8') возвращает - PullRequest
0 голосов
/ 06 марта 2019

Я сейчас работаю над проектом BlueTooth LE, модуль bluepy требует, чтобы я отправлял данные в байтах ... Я хотел бы отправить b '\ xFF', поэтому я пишу:

bytes('\xff', 'utf-8')

, что возвращает:

b'\xc3\xbf'

Исследуя немного дальше, я обнаружил, что на самом деле происходит для всех чисел uint-8 выше 127.

Копаясь в поисках решения, я нашел множество вопросов и ответов, которые предлагают использовать struct.unpack, извините, не повезло ...

>>> type(struct.unpack('B', b'\xff')[0])
<class 'int'>

struct.unpack возвращает номер класса int. К настоящему времени я обнаружил, что:

b'\xFF'

на самом деле создает байт со всеми ... Однако я все же хотел бы, чтобы мне объяснили это поведение как bytes (), так и struct.unpack (). (Python 3.5.3 на Raspberry Pi 3)

Большое спасибо,

KK

1 Ответ

1 голос
/ 06 марта 2019

Извините, я сам нашел решение своей проблемы ...

n = 255
bytes([n])

справится с задачей.В некотором смысле озадачен логикой квадратных скобок, но мы находимся в бизнесе решений, давайте оставим теорию для настоящих экспертов.: -)

...