【问题标题】:Convert 2 byte from byte array to one integer将字节数组中的 2 个字节转换为一个整数
【发布时间】:2021-03-14 02:22:10
【问题描述】:

我有一个bytearrays 列表,看起来像这样:

data = [
   bytearray(b'\x01'),
   bytearray(b'\x03'),
   bytearray(b'\x04'),
   bytearray(b'\x01'),
   bytearray(b'\x05'),
   bytearray(b'\x00'),
   bytearray(b'\xC0'),
   bytearray(b'\xfa'),
   bytearray(b'3')
]

这个数组是我从传感器读取的。我需要的是一起使用 data[3]data[4] (所以 01 05 )将其转换为整数(应为 261)以从传感器获取值。我很难做到。有人可以帮忙吗?

【问题讨论】:

    标签: python arrays python-3.x type-conversion


    【解决方案1】:

    int 为此提供了一个替代构造函数:

    >>> int.from_bytes(data[3] + data[4], 'big')
    261
    

    【讨论】:

      【解决方案2】:

      你可以使用

      data[3][0] * 256 + data[4][0]
      

      data[3][0] << 8 | data[4][0]
      

      【讨论】:

        【解决方案3】:

        一个可读的解决方案是:

        temp = data[3] + data[4]
        r = int.from_bytes(temp, byteorder='big', signed=False)
        

        结合字节数组并使用 from_bytes 方法创建一个整数(实际上是 261,字节序为“大”且无符号)。

        【讨论】:

          猜你喜欢
          • 2013-06-08
          • 2021-03-24
          • 2011-02-09
          • 1970-01-01
          • 1970-01-01
          • 2023-04-01
          • 1970-01-01
          • 2014-04-18
          • 1970-01-01
          相关资源
          最近更新 更多