我有一个十进制的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
并将这两个值存储在Hex
中输出:
y_msb=23
y_lsb=28
我的问题是在大小为n的Python3列表中执行此操作的最有效方法是什么。
答案 0 :(得分:1)
使用generator expression和一些位操作,你可以这样做:
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