我在兩個不同的項目中爲兩個不同的函數生成了哈希。一個項目使用python 2.7環境,其他使用python 3.4。我需要匹配那兩個散列。如何爲python 2.7和3.4生成相同的哈希值
x=("asd","def")
hash(x)
它不匹配。任何想法?提前致謝。
我在兩個不同的項目中爲兩個不同的函數生成了哈希。一個項目使用python 2.7環境,其他使用python 3.4。我需要匹配那兩個散列。如何爲python 2.7和3.4生成相同的哈希值
x=("asd","def")
hash(x)
它不匹配。任何想法?提前致謝。
嗯,雖然運氣好。 __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
有效。
謝謝。但它不適用於字符串值。 –
@SunnoSakib請給出Python 2和3的哈希值。 –
python 3.4:hash((「asd」,「def」)) - > -1259920402 ..... hash((「asd」,「def 「))&0xFFFFFFFF python 2.7:hash((」asd「,」def「)) 923829442 ... hash((」asd「,」def「))&0xFFFFFFFF 923829442L –
你是否僅限於python的內置哈希函數? –
仍然通過內置功能搜索某種方式。如果沒有找到,我會去定製@JoelsElf –