我在两个不同的项目中为两个不同的函数生成了一个哈希。一个项目使用python 2.7环境,其他使用python 3.4。我需要匹配这两个哈希。
x=("asd","def")
hash(x)
它不匹配。任何的想法?提前谢谢。
答案 0 :(得分:2)
__hash__
的内部详细信息被视为实施细节。另外,在3.3以后的Pythons中,字符串的哈希函数默认是随机的。计算方法不同于32位版本到64位版本(该值被截断为Py_ssize_t
)。
但是,例如,如果您的Python 3.5是64位而Python 2.7是32位;您可以尝试使用0xFFFFFFFF来获取Python 3值以获得2.7值,例如,如果
>>> hash((1, 2, 3)) & 0xFFFFFFFF
作品。
答案 1 :(得分:0)
在 Python 3 和 2 中使用 py27hash 获得相同的哈希结果:
$ python3
>>> from py27hash.hash import hash27
>>> print(hash27("test1234"))
1724133767363937712
$ python2.7
>>> print(hash("test1234"))
1724133767363937712