作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一个包含 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
我的问题是在大小为 n 的 Python3 列表中执行此操作的最有效方法是什么。
最佳答案
带有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
关于python - 将 n 个元素(大小 = 2 字节,十进制)的列表拆分为 2n 个元素(大小 = 1 字节,十六进制),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50692125/
我是一名优秀的程序员,十分优秀!