【问题标题】:Splitting list of n elements(size = 2 Bytes,decimal) to 2n elements(size = 1 Byte,hexadecimal)将 n 个元素的列表(大小 = 2 字节,十进制)拆分为 2n 个元素(大小 = 1 字节,十六进制)
【发布时间】:2018-11-14 11:17:25
【问题描述】:

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

【问题讨论】:

    标签: python python-3.x hex


    【解决方案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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-12-18
      • 2015-08-08
      • 1970-01-01
      • 2014-03-11
      • 2012-12-20
      • 2015-04-18
      • 2013-09-12
      • 1970-01-01
      相关资源
      最近更新 更多