使用struct将4个字节转换为整数

时间:2016-04-23 13:05:09

标签: python

我有一个通过I2C连接连接到我的计算机的微控制器,它一次发回1个字节的数据。我试图向python程序发送一个4字节的数字。我在一个单独的字节数组中收到它,如[123,45,67,89]

我需要将它转换回python中的整数。我试图使用struct.unpack来做到这一点,但我无法得到正确的数据格式。我试图以形式得到它:

struct.unpack("I",b'x12\x34\x56\x78)

我不知道如何将4个字节放入struct所需的格式中。我可以将数字转换为十六进制,但不知道如何将它们串在一起。

1 个答案:

答案 0 :(得分:4)

您可以将其转换为bytearray并将其传递给struct.unpack()

import struct

data = [123, 45, 67, 89]

# Show hex values of data.
print(list('%02x' % b for b in data))  # -> ['7b', '2d', '43', '59']

# Convert to 4 byte unsigned integer data interpreting data as being in 
# little-endian byte order.
value = struct.unpack("<I", bytearray(data))[0]
print(hex(value))  # -> 0x59432d7b