2017-02-28 46 views
-2

我有一個自定義的__hash__函數。意外的Python哈希截斷

我知道hash(object)截斷到指定的整數寬度。這是我的系統上的64。

但是,如果& 0xffffffffffffffff被踢出我的自定義散列函數的值,它有時(但並非總是)被截斷突變。

發生了什麼事?

+0

變異如何?任何例子? –

回答

1

Python哈希值爲signed整數。你的__hash__輸出可能適合於一個無符號的64位int,但不一定是有符號的。 (另外,你看到的並不是截斷。)