Неожиданное усечение Python Hash
У меня есть обычай __hash__
функция.
Я знаю что hash(object)
усекает до указанной целочисленной ширины. Это 64 в моей системе.
Однако если & 0xffffffffffffffff
значение, которое выбрасывается из моей пользовательской хэш-функции, иногда (но не всегда!) видоизменяется усечением.
В чем дело?
1 ответ
Хэши Python - это целые числа со знаком. Ваш __hash__
выходные данные могут помещаться в 64-разрядное целое число без знака, но не обязательно со знаком. (Кроме того, это не усечение, которое вы видите.)