Байтный массив формата строки в Python 2.7 - PullRequest
0 голосов
/ 22 октября 2018

Я довольно новичок в python, и в настоящее время я играю с pyserial , и в основном я делаю отправку простых команд через UART.У меня есть простая команда:

b'page 0\xff\xff\xff'

, которая в основном говорит аппаратному обеспечению "Перейти на страницу с индексом 0" (это Отображение Nextion ).То, что я хочу сделать, это как-то параметризовать этот байтовый массив, чтобы иметь возможность динамически передавать 0 .Я читал разные темы в интернете: сначала я сделал строку, а потом один использовал bytearray , но мне было интересно, нельзя ли здесь применить его каким-либо образом, используя интерполяцию строк или что-то в этом роде.

ПРИМЕЧАНИЕ : \ xff в конце зависят от аппаратного обеспечения и должны быть там.

Ответы [ 2 ]

0 голосов
/ 24 октября 2018

Если кому-то все еще интересно, как я достиг своей цели, я пришел к следующему решению:

def __formatted_page_command(self, pageId): 
    # This is the representation of 'page 0\xff\xff\xff'. What we do here is to dynamically assign the page id. 
    commandAsBytesArray = [0x70,0x61,0x67,0x65,0x20,0x30,0xff, 0xff, 0xff] 
    commandAsBytesArray[5] = ord(str(pageId)) 
    return bytes(commandAsBytesArray)

Итак, таким образом, я могу динамически получить:

b'page 0\xff\xff\xff'
b'page 1\xff\xff\xff'
b'page 2\xff\xff\xff'

просто позвонив

self.__formatted_page_command(myPageId)
0 голосов
/ 22 октября 2018

Вы проверяли документы формата строки в python?

pageNum = 0
b'page {}\xff\xff\xff'.format(pageNum)

https://docs.python.org/3.4/library/string.html#string-formatting

...