将n个元素(大小= 2个字节,十进制)拆分为2n个元素(大小= 1个字节,十六进制)

时间:2018-06-05 04:36:50

标签: python python-3.x hex

我有一个十进制的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列表中执行此操作的最有效方法是什么。

1 个答案:

答案 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