Skip to main content
 首页 » 编程设计

python之如何解码这个小端(int32)消息

2025年05月04日18wayfarer

我有一个任务要做。我得到了很多数据,我的工作是解码它。我得到的每一件作品都是用可读的十六进制数字串写的。例如:“8a fd ff ff”

我试过 struct.unpack('<l', "8a fd ff ff")而且我也尝试了很多方法来解码,列出来太长了。我唯一知道的是,结果应该是 -630。 我不知道数据是如何转化为这种形式的。

data = "8a fd ff ff" 
aa = np.array(list(data)) 
print(aa) 
struct.unpack('<l', aa) 

struct.error: unpack requires a buffer of 4 bytes

所以结果应该是-630。我使用在线十六进制解码器对其进行了测试。

请您参考如下方法:

找到第一个答案很好,但更直观、更容易记住的是下面的答案。鉴于您的所有数据都是以空格分隔的十六进制数字字符串给出的,您可以使用:

data = "8a fd ff ff" 
bytes_data = bytes.fromhex( data.strip() )  
struct.unpack("<l", bytes_data) 

在这个例子中我们首先加载数据,删除所有的空格,转换为二进制十六进制表示并读出。输出如您所愿。