我想使用 Pythonhash()
函数从对象中获取整数哈希值。但是内置hash()
可以给出负值,我只想要正值。我希望它在 32 位和 64 位平台上都能正常工作。
即在 32 位 Python 上,hash()
可以返回范围-2**31
为2**31 - 1
. 在 64 位系统上,可以返回范围为hash()
的整数。-2**63
2**63 - 1
但我想要一个范围0
在2**32-1
32 位系统和64 位系统0
上的哈希值。2**64-1
在 32 位或 64 位目标平台范围内,将哈希值转换为其等效正值的最佳方法是什么?
(上下文:我正在尝试创建一个新的random.Random
样式类。根据random.Random.seed()
文档,种子“可选参数 x 可以是任何可散列的对象。”所以我想复制该功能,除了我的种子算法不能处理负整数值,仅处理正整数。)