我有一个通过I2C连接连接到我的计算机的微控制器,它一次发回1个字节的数据。我试图向python程序发送一个4字节的数字。我在一个单独的字节数组中收到它,如[123,45,67,89]
。
我需要将它转换回python中的整数。我试图使用struct.unpack来做到这一点,但我无法得到正确的数据格式。我试图以形式得到它:
struct.unpack("I",b'x12\x34\x56\x78)
我不知道如何将4个字节放入struct所需的格式中。我可以将数字转换为十六进制,但不知道如何将它们串在一起。
答案 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