Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/328.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Python 3中将两个整数映射为一个整数_Python_Python 3.x_Hash_Mapping - Fatal编程技术网

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

在Python 3中将两个整数映射为一个整数,python,python-3.x,hash,mapping,Python,Python 3.x,Hash,Mapping,我想为类中的哈希函数将两个整数映射为一个整数。这些整数的范围从0到12856320000000。我听说我可以使用下面的Cantour配对功能来实现这一点 但是,我的sys.maxsize是 9223372036854775807 因此,当k1和k2如以下示例所示较大时,答案将不是整数 k1 = 6887309306 k2 = 6887309307 pi(k1,k2)=9.487005898057764e+19 有没有办法解决这个问题?谢谢您的问题不是由数字引起的,而是由您除以2的事实引起的

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

但是,我的
sys.maxsize

9223372036854775807
因此,当k1和k2如以下示例所示较大时,答案将不是整数

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

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

您的问题不是由数字引起的,而是由您除以2的事实引起的。Python3.x中的除法总是产生一个浮点数。应使用整数除法:

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

使用
long
ints?