可能重复:
以独特且确定的方式将两个整数映射为一个
我正在尝试为两个整数对(Ruby)创建唯一标识符:
f(i1,i2) = f(i2, i1) = some_unique_value
那么, i1+i2, i1*i2, i1^i2 -不是唯一的以及 (i1>i2) 吗?“i1”+“i2”:“i2”+“i1”。
我认为以下解决方案可以:
(i1>i2) ? "i1" + "_" + "i2" : "i2" + "_" + "i1"
但:
- 我必须将结果保存在数据库中并对其进行索引。所以我更喜欢它是一个整数,并且尽可能小。
- Zlib.crc32(f(i1,i2)) 能保证唯一性吗?
谢谢。
升级版:
实际上,我不确定结果必须是整数。也许我可以将其转换为十进制: (i1>i2) ?i1.i2:i2.i1
?