Я хочу использовать функцию Python hash() для получения целых хэшей из объектов. Но встроенный hash() может давать отрицательные значения, и я хочу только положительный. И я хочу, чтобы он работал разумно на 32-битных и 64-битных платформах.
т.е. на 32-битном Python, hash() может возвращать целое число в диапазоне от -2**31 до 2**31 - 1.
В 64-битных системах hash() может возвращать целое число в диапазоне от -2**63 до 2**63 - 1.
Но я хочу хэш в диапазоне от 0 до 2**32-1 в 32-битных системах и 0 до 2**64-1 в 64-битных системах.
Каков наилучший способ преобразования хеш-значения в его эквивалентное положительное значение в диапазоне 32- или 64-битной целевой платформы?
(Контекст: я пытаюсь создать новый класс стиля random.Random. В соответствии с random.Random.seed() docs семенной "необязательный аргумент x" может быть любой хешируемый объект ". Поэтому я хотел бы дублировать эту функциональность, за исключением того, что мой алгоритм семени не может обрабатывать отрицательные целочисленные значения, только положительные.)