2016-04-08 49 views
-1

我在兩個不同的項目中爲兩個不同的函數生成了哈希。一個項目使用python 2.7環境,其他使用python 3.4。我需要匹配那兩個散列。如何爲python 2.7和3.4生成相同的哈希值

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

它不匹配。任何想法?提前致謝。

+0

你是否僅限於python的內置哈希函數? –

+0

仍然通過內置功能搜索某種方式。如果沒有找到,我會去定製@JoelsElf –

回答

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 

有效。

+0

謝謝。但它不適用於字符串值。 –

+0

@SunnoSakib請給出Python 2和3的哈希值。 –

+0

python 3.4:hash((「asd」,「def」)) - > -1259920402 ..... hash((「asd」,「def 「))&0xFFFFFFFF python 2.7:hash((」asd「,」def「)) 923829442 ... hash((」asd「,」def「))&0xFFFFFFFF 923829442L –

相關問題