为了升级到python 3,我需要算法才能继续工作,我想知道是否存在与hash函数等效的python代码或利用hashlib库生成结果。
简单使用hashlib算法似乎没有使用相同的答案python 3使用不同的算法sipHash和随机种子进行字符串哈希。
-更新我尝试在python 2中运行此代码,但由于它生成不同的结果而无法正常工作。
def c_mul(a, b):
return eval(hex((long(a) * b) & 0xFFFFFFFFL)[:-1])
def hash2(self):
if not self:
return 0 # empty
value = ord(self[0]) << 7
for char in self:
value = c_mul(1000003, value) ^ ord(char)
value = value ^ len(self)
if value == -1:
value = -2
return value
尽管我需要代码才能在python 3中运行
-更新通过考虑64位和python3的特定实现对上述算法进行了修改。解决方案在答案中。
我使用哈希函数在Python 2中生成一些分区键值。我依赖于内置的哈希函数。我不知道版本之间的实现不能保证是相同的...