我有一个微控制器通过 I2C 连接连接到我的计算机,它一次发送回 1 个字节的数据。我正在尝试向 python 程序发送一个 4 字节的数字。我在这样的单个字节数组中收到它[123,45,67,89]。
我需要将它转换回 python 中的整数。我正在尝试使用 struct.unpack 来执行此操作,但无法获得正确的数据格式。我正在尝试以以下形式获取它:
struct.unpack("I",b'x12\x34\x56\x78)
Run Code Online (Sandbox Code Playgroud)
我不知道如何将 4 个字节转换为 struct 所需的形式。我可以将数字转换为十六进制,但不知道如何将它们串在一起。
您可以将其转换为 abytearray并将其传递给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
Run Code Online (Sandbox Code Playgroud)