【发布时间】:2012-12-01 19:03:42
【问题描述】:
可能重复:
Mapping two integers to one, in a unique and deterministic way
我正在尝试为一对两个整数(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
?
【问题讨论】: