我想编写可扩展哈希。在wiki上,我找到了一个很好的Python实现。但是这段代码使用了最低有效位,因此当我对
d = 1
进行哈希1101
时,值为1
,而对于d = 2
,值为01
。我想使用最高有效位。例如:哈希1101
,d = 1
值为1
,d = 2
值为11
。有没有简单的方法可以做到这一点?我尝试过,但无法做到。
你明白为什么它使用最低有效位吗?
多多少少懂一些。这使我们在使用数组时更加高效。好的,所以对于哈希函数,我想从左到右使用4字节整数中的四个最低位。
h = hash(k)
h = h & 0xf #use mask to get four least bits
p = self.pp[ h >> ( 4 - GD)]
它不起作用,我不知道为什么。
00001111
)的最重要的四位是0000
还是1111
?前者很容易计算,后者则不太容易(可能需要一个log
)。 - BlckknghtGD
?为什么你关心使用某些四位比其他四位更多?如果你的哈希函数很好,它实际上就是一个随机数,无论你选择哪四位,它仍然是一个随机数。 - Phil Frost