Разделение списка из n элементов (размер = 2 байта, десятичный) на 2n элементов (размер = 1 байт, шестнадцатеричный) - PullRequest
0 голосов
/ 05 июня 2018

У меня есть список из n элементов в десятичном формате, где каждый элемент имеет длину два байта.

Позволяет сказать:

x = [9000 , 5000 , 2000 , 400]

Идея состоит в том, чтобы разбить каждый элемент на MSB и LSB исохранить его в последовательных элементах списка.

Выходные данные должны быть:

y = [23 , 28 , 13 , 88 , 07 , D0 , 01 , 90]

Теперь основная логика для операции с номером сигнала ясна:

x=9000
y_msb = x//256 #Hex Quotient for FF
y_lsb = x%256 #Hex Remainder for FF

И сохраните обазначения в шестнадцатеричном формате

Вывод:

y_msb=23
y_lsb=28

Мой вопрос заключается в том, как наиболее эффективно выполнить эту операцию в списках Python3 размера n.

1 Ответ

0 голосов
/ 05 июня 2018

С генератором выражения и некоторыми битовыми манипуляциями вы можете сделать это следующим образом:

Код:

data = sum(((d >> 8, d & 0xff) for d in in_data), ())

Код теста:

in_data = [9000 , 5000 , 2000 , 400]
out_data = (0x23, 0x28, 0x13, 0x88, 0x07, 0xD0, 0x01, 0x90)

data = sum(((d >> 8, d & 0xff) for d in in_data), ())
assert data == out_data
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...