php - 将多个数字存储为单个唯一数字

标签 php numbers primes bitmask

我有必要将许多号码(我可以决定哪些号码)存储为单个唯一号码,我应该能够从中检索原始号码。
我已经知道有两种方法可以做到这一点:

1) 算术基本定理(素数)
假设我有 5 个值,我为每个值分配一个除 1 之外的质数

a = 2
b = 3
c = 5
d = 7
e = 13

如果我想存储 a、b 和 c,我可以将它们相乘 2*3*5=30 并且我知道没有其他素数乘积可以是 30。然后检查一个值是否包含,例如,b,我需要做的就是 30 % b == 0

2) 位掩码 就像 Linux 权限一样,使用 2 的幂并对每个值求和

但这两种方法成长得很快(第一种方法比第二种方法快),并且使用素数需要我有很多素数。
例如,当您有一千个值时,是否有其他方法可以有效地完成此操作?

最佳答案

如果您要存储基数 10 的数字,则可以通过基数 11 的数字进行转换。随着基数的增加,你就有了一个额外的“数字”。使用该数字作为分隔符。因此,三个以 10 为基数的数字“10, 42, 457”变成“10A42A457”:一个以 11 为基数的数字(以“A”作为附加数字)。

无论原始数字采用什么基数,请将基数增加 1 并连接,使用多余的数字作为分隔符。这将为您提供增加基数中的一个数字。

该单个数字可以存储在您认为方便的任何数字基数中:例如二进制、十进制或十六进制。

要检索原始数字,只需转换为基数 11(或其他)并用分隔符替换多余的数字。

预计到达时间:您不必使用基数 11。单个数字“10A42A457”也是有效的十六进制数,因此可以使用 11 或以上的任何基数。十六进制可能比 11 进制更容易使用。

关于php - 将多个数字存储为单个唯一数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44346399/

相关文章:

JavaScript,要求用户插入一个数字并判断它是否是素数

python - 在 Python 中分解一个数字

php - JSON 结构不适用于 IE7 (JavaScript)

php - Zend Framework 1. 获取评论

php - 如何像保护 feed 一样保护 XML

mysql - 如何从 mysqldump 插入 float

java - 在JAVA中打印数组中的素数

javascript - 具有相同提交/点击功能的 AJAX 多个表单

random - 如何测试随机数?

python - 如何从 0000 循环到 9999 并将数字转换为相关字符串?