python - 在 Python 3 中将两个整数映射为一个整数

标签 python python-3.x hash mapping

我想将两个整数映射为一个,用于类中的哈希函数。这些整数范围从 0 到 12856320000000。我听说我可以使用下面的 Cantour 配对函数来做到这一点

enter image description here

但是,我的sys.maxsize

9223372036854775807

因此,当 k1 和 k2 很大(如下例所示)时,答案将不是整数

k1 = 6887309306
k2 = 6887309307
pi(k1,k2)=9.487005898057764e+19

有办法解决这个问题吗?谢谢

最佳答案

您的问题不是由数字引起的,而是由除以 2 引起的。Python 3.x 中的除法总是产生 float 。您应该使用整数除法:

(k1 + k2) * (k1 + k2 + 1) // 2 + k2
#94870058980577640498

关于python - 在 Python 3 中将两个整数映射为一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51182342/

相关文章:

php - 这看起来像密码的强盐吗

python - Django 表单集困难

python - 访问用户的 twitter HomeTimeline

python - IO错误: [Errno 2] No such file or directory when run in Flex App Engine

python - `[]` 和 `list()' 的行为有什么区别?

java - 使用哈希存储具有唯一文件名的图像

python - 使用python将日志文件转换为json文件

python - python 中现有 dict 列表中的 dict 列表

python-3.x - 如何使用逻辑运算符从具有 categoricalDtype 的列中选择 pandas 数据框中的行

perl - 在一个文件中声明一个哈希表并在 Perl 中的另一个文件中使用它