hash()Python関数を使用して、オブジェクトから整数ハッシュを取得したいと考えています。しかし、ビルトインhash()は負の値を与える可能性があり、正のみが必要です。そして、32 ビットと 64 ビットの両方のプラットフォームで適切に動作するようにしたいと考えています。
つまり、32 ビット Python では、~hash()の範囲の整数を返すことができます。64 ビット システムでは、 ~の範囲の整数を返すことができます。-2**312**31 - 1hash()-2**632**63 - 1
しかし、32 ビット システムではから064ビットシステムでは までの範囲のハッシュが必要です。2**32-102**64-1
32 ビットまたは 64 ビットのターゲット プラットフォームの範囲内で、ハッシュ値を同等の正の値に変換する最善の方法は何ですか?
(コンテキスト:新しいスタイルクラスを作成しようとしています。ドキュメントrandom.Randomによると、シードは「オプションの引数 x は任意のハッシュ可能なオブジェクトにすることができます。」したがって、シードアルゴリズムができないことを除いて、その機能を複製したいと思います負の整数値を処理し、正の値のみを処理します)。random.Random.seed()