我有这样的长整数:5291658276538691055
我如何以编程方式将此数字转换为 4-6 个大写字母,这是一个独特的组合,也可以反转以返回该数字?
例如使用 OBJ-C。
我有这样的长整数:5291658276538691055
我如何以编程方式将此数字转换为 4-6 个大写字母,这是一个独特的组合,也可以反转以返回该数字?
例如使用 OBJ-C。
有26个大写字母;
其中 6 个可以代表 26 ^ 6 个数字(308915776);
所以不行。您正在尝试将更大范围的数字映射到更小的范围,它是不可逆的。
此外,log 5291658276538691055 / log 26
小于 14,因此如果 14 个字母对您有好处,只需将数字转换为基于 26 的数字并将数字映射为字母。
还有一件事 - 如果数字范围足够小,您可以对数字进行一些操作(例如,只需减去最小值)并对其进行编码,这将花费您更少的数字。
您需要将数字转换为 Base 26(十六进制 - 活泼的名称!)
关于 Hexavigesimal的Wikipedia 文章提供了 Java 中的示例代码 - 您应该能够很容易地适应它。
注意:您不能仅使用转换算法将您提到的长数字减少到 4-6 个大写字母(您在 Base 26 中的示例是 BCKSATKEBRYBXJ)。如果你需要这么短的转换,你只有两个选择: