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

pek*_*sus 2 python

我有一个微控制器通过 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 所需的形式。我可以将数字转换为十六进制,但不知道如何将它们串在一起。

mar*_*eau 5

您可以将其转换为 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)