>>> mmh3.hash128('Helo', 0)
36257070446276374087060059272450503274
>>> mmh3.hash128('Helo', 0, False)
20867082311197569335197338913536872358
使用javascript方法时:
murmurHash3.x64.hash128("Helo")
'29c3815d749d726a1b46db969b492ae8'
你知道我该如何解决这个问题吗?我尝试自己翻译,但最终没成功,让我很头疼。
使用的库:
经过研究,JS输出的是16进制的值,问题出在字节序的差异上。 Python 将 128 位整数输出为单个大整数,而 JavaScript 将哈希拆分为两个 64 位段。
hash_int = mmh3.hash128('Helo', 0)
# Splitting it into two 64-bit segments and reversing them
high = (hash_int >> 64) & ((1 << 64) - 1)
low = hash_int & ((1 << 64) - 1)
# Converting each part to hex and reversing the order
hash_hex = f'{low:016x}{high:016x}'
print(hash_hex) #expected output:'29c3815d749d726a1b46db969b492ae8'