Nombre entier positif de la fonction hash () de Python

Je veux utiliser le Python hash() fonction pour obtenir entier à partir de hachages des objets. Mais intégrée dans hash() peut donner des valeurs négatives, et je ne veux que du positif. Et je veux qu'il fonctionne sensiblement sur les deux versions 32 bits et 64 bits des plates-formes.

I. e. sur 32 bits Python, hash() peut retourner un entier dans la plage de -2**31 à 2**31 - 1.
Sur les systèmes 64 bits, hash() peut retourner un entier dans la plage de -2**63 à 2**63 - 1.

Mais je veux un hachage de la gamme 0 à 2**32-1 sur les systèmes 32 bits, et 0 à 2**64-1 sur les systèmes 64 bits.

Quel est le meilleur moyen de convertir la valeur de hachage pour l'équivalent de sa valeur positive au sein de la gamme de la version 32 ou 64 bits plate-forme cible?

(Contexte: je suis en train de faire une nouvelle random.Random classe de style. Selon le aléatoire.Aléatoire.de la graine() docsla graine "argument optionnel x peut être n'importe quel hashable de l'objet." Donc je voudrais dupliquer cette fonctionnalité, sauf que ma graine algorithme ne peut pas gérer les négatifs des valeurs entières, seul point positif.)

source d'informationauteur Craig McQueen