需要一个数学算法来编码大整数到整数的数字



我想将100位数字的值转换为小于10位数字的值,反之亦然。所以我把这个编码的号码传递给移动用户,在返回时可以再次生成100位数字。我想在PHP, . net或JS中使用它。

但是在那之前我需要一个算法

我有一些想法,在我的脑海中使用简单的减法和加乘选项来实现。但需要更安全的方法

你的要求是不可能的。你正试图把10^100个项目分类到10^10个盒子里。有些盒子会有多个项目,因此不可能反转回"原始"项目。

您可以将以10为基数的100位数字编码为以62为基数的56位数字(使用大写和小写罗马字母以及数字0-9)。这里的数学是100 * log(10) / log(62)

要使用某个字母表中少于10个字符进行编码,您需要一个包含~2^34个符号的字母表。这里的数学是100 * log(10) / log(number of symbols)。祝你好运。

如果100位数字中有超过10 000 000 000个不同的可能值,则不可能将其映射到10位数字并可靠地映射回原始数字

一个100位的数字,我假设这是一个以10为基数的数,当在计算机上谈论数字时,谈论"数字"几乎是没有意义的。

如果你实际上是指一个100位的整数,那么这就不容易适合一个64位的整数(范围+/- 9,223,372,036,854,775,808),那么你的问题就没有那么好。再多的压缩或编码也不能让你用不超过10位来表示100位。

如果你指的是以10为基数的100个数字,那么你处理的是个位数,所以可能应该把它们当作字节并使用个位数库。

100进制十位数仍然小于512位。

假设100位数字是以10为基数,那么如果我的数学没有错的话,你需要10个以100为基数的数字来表示相同的数字。因此,除了使用0-9的字符外,您还需要扩展字符以包含其他符号,包括大写和小写字母等,以完成100个字符的字母表。好吧,我的数学是错的,所以忽略它,但考虑下一段。

另一种想法是使用哈希算法从100位数字中获得10字节的哈希,并将其用作服务器端数据库(哈希表)中的键。无需编码/解码,只需将密钥发送给移动客户端,移动客户端使用该密钥从服务器获取100位数字

最新更新