在 Python 中获取最低 10 位哈希作为整数的最有效方法



我正在尝试将 sha256 哈希的前 10 位作为整数获取,目前,我转换为字符串,然后将其修剪为 10 位并转换回整数。

这似乎很复杂,有没有更好的方法?

我从这里的另一篇帖子中借用的代码

def inttobin(i):
if i == 0:
    return "0"
s = ''
while i:
    if i & 1 == 1:
        s = "1" + s
    else:
        s = "0" + s
    i >>= 1
return s

那么我用来转换为 int 的代码是:

bin = inttobin(struct.unpack('H', hash[:2])[0]) 
idx = int(bin[-10:], 2)

有什么建议吗?

要将某些位提取为整数,可以使用 Python 的"按位和",&

对于整数i,前十位是i & 10231023 == (2**10) - 1)。所有高于 10 的位都不在 1023 中,因此将为零。

一个简单的 4 位示例 ( (2**4) - 1 == 15

):
a = 22 #     10110
b = 15 #      1111
a & b == 6 #  0110

最新更新