Как я могу создать байтовые значения из целых чисел в Python? - PullRequest
3 голосов
/ 10 марта 2012

Справочная информация. Мне нужно отправить числовое значение в виде байта на внешнее устройство, но я столкнулся с проблемой. Мой код:

ser=serial.Serial("COM3",9600, timeout=0)
ser.write(value)

где "value" - это int, который я прочитал, прочитал. Проблема в том, что когда я отправляю это, он отправляет символьное значение, а не фактическое значение (он отправляет байтовое значение 31 для числа 5, так как это, я полагаю, позиция Юникода)

На самом деле я хочу иметь возможность отправлять ему символ "\ x05", например. Я предполагаю, что мой вопрос, как бы я преобразовал и int 5 в символ "\ x05", или 37 в "\ x37"

Ответы [ 2 ]

8 голосов
/ 10 марта 2012

Используйте встроенную функцию chr().

Если у вас есть список таких целых чисел, которые нужно отправить, вы можете рассмотреть возможность использования bytearray().

Кроме того, в более новых версиях Python вы можете просто использовать тип byte.

4 голосов
/ 10 марта 2012

Вы можете использовать это ..

bytes(chr(my_int))    # not strictly correct unless 0<=my_int<=255
bytes((my_int,))
...