如何为python 2.7和3.4

时间:2016-04-08 09:34:58

标签: python-2.7 python-3.x hash

我在两个不同的项目中为两个不同的函数生成了一个哈希。一个项目使用python 2.7环境,其他使用python 3.4。我需要匹配这两个哈希。

    x=("asd","def")
    hash(x)

它不匹配。任何的想法?提前谢谢。

2 个答案:

答案 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