Сокеты Python отправляют целое значение больше 127 в виде одного байта - PullRequest
0 голосов
/ 30 сентября 2019

Я использую Python 3 и хочу отправить целое число больше 127 в виде одного байта. Как и ожидалось, я не могу сделать это с помощью функции chr (), так как эта функция преобразует ее в 2 байта. Когда я использую str (), он конвертирует его в 3 отдельных байта, которые мне не нужны. Я пытался, но я не могу найти никакого решения.

1 Ответ

0 голосов
/ 30 сентября 2019

В общем, вы должны стараться, чтобы байт-ориентированные операции выполнялись для строк байтов (bytes), а текстовые (или хотя бы ориентированные на USV) операции выполнялись для строк (str). Поэтому вместо того, чтобы пытаться создать ваше сообщение в виде строки для единственного окончательного кодирования:

message_identifier =  chr(50)
message_name = 'Hello '
message_data_size = '160'.encode().decode() # clueless here

frame = (message_identifier + message_name + (message_data_size)) # don't know what to do with message_data_size

byt = frame.encode()

кодировать, когда логика передает границу от текста к байту:

message_identifier = bytes([50])  # or b'\x32', or b'2'
message_name = 'Hello '
message_data_size = bytes([160])

frame = message_identifier + message_name.encode('utf-8') + message_data_size
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...