我正在尝试将 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 & 1023
(1023 == (2**10) - 1
)。所有高于 10 的位都不在 1023 中,因此将为零。
一个简单的 4 位示例 ( (2**4) - 1 == 15
a = 22 # 10110
b = 15 # 1111
a & b == 6 # 0110