如何在Python中解包32位整数?

0 投票
1 回答
1330 浏览
提问于 2025-04-18 13:35

我对结构体不是很熟悉,但我觉得它们可能是解决这个问题的最佳方法。我有一大串二进制数据,需要从一个特定的位置开始提取32个字符,并把它们存储为一个整数。有什么好的方法可以做到这一点呢?

因为我需要从一个初始位置开始,所以我一直在尝试使用 struct.unpack_from()。根据这个 格式表,我认为 'i' 格式代表4个字节,正好符合我的需求。但是下面的代码执行后打印出 "(825307441,)",而我原本期待的是二进制、十进制或十六进制的形式。有人能告诉我825307441代表什么吗?

另外,有没有类似的方法可以提取数据,但返回的是一个列表而不是元组呢?谢谢!

st = "1111111111111111111111111111111"
test = struct.unpack_from('i',st,0)
print test

1 个回答

4

直接用 int 就可以了

>>> st = "1111111111111111111111111111111"
>>> int(st,2)
2147483647
>>> int(st[1:4],2)
7

你可以随意切割字符串,得到你想要的索引。把 2 传给 int 是在告诉它,你传入的是一个二进制的字符串。

撰写回答