,hash(x)
可以返回的最小值是多少?我想要使用散列給數據庫值一個快速的「指紋」(基本上可以很容易地看出兩個較長的,相似的文本實際上是否相等),並且想要消除負數(爲了簡單起見),所以我想我只是添加儘可能小的值來獲得零和上的值。 the manual非常有用地指出「哈希值是整數」。這與我之前所知道的一樣多。hash()函數的最小值?在Python中(3)
今天我有點驚訝,當我發現我的64位ubuntu上的手工編譯的Python顯然使用64位左右的散列函數;我一直認爲應該是32位。機器體系結構對hash()
函數有影響嗎?
另外,當我編譯Python時,我沒有設置任何選項來編譯64位體系結構(希望它會「只是工作」)。 python是否會自行調整它,或者我現在是否在64位機器上有32位python?不是一個愚蠢的問題,我相信很多次你根據處理器提供單獨的軟件包。
編輯:我強烈懷疑,答案將被密切相關的sys.maxint
已經黯然蟒蛇3.我的懷疑去除的是,我應該def xhash(x): return hash(x) - (-maxint - 1)
如果maxint
是可用的。我知道由於整數和長整數的統一,這個值「失去了價值」,但這裏可能是一個可以證明有用的區域。任何人都有一個想法如何實現模擬?
即使缺少'maxint',您可能很樂意假定哈希在平臺上佔用了一些底層整數類型。如果你只是想弄清楚它是32位還是64位,那麼就把任何舊事物(好吧,不是整數0)的哈希值加一下,看看答案的大小順序。假設一個好的散列函數,散列的前32位二進制數字是* all * 0的可能性可以忽略不計,因此一個散列值會告訴你該範圍。或者,犧牲1比特的散列質量,並使用'abs(hash(x))'。 – 2010-10-24 23:41:43