我有这样的长整数:5291658276538691055
我怎样才能以编程方式将此数字转换为4-6大写字母,这只是一个独特的组合,也可以反转以回到数字?
例如使用OBJ-C。
答案 0 :(得分:3)
有26个大写字母;
其中6个可以代表26 ^ 6个数字(308915776);
所以,不。您试图将更大范围的数字映射到更小的范围,它不可逆转。
此外,log 5291658276538691055 / log 26
小于14,所以如果14个字母对你有好处,只需将数字转换为26,并将数字映射到字母。
还有一件事 - 如果数字范围足够小,你可以对数字进行一些操作(例如,只减去最小值)并对其进行编码,这将花费你更少的数字。
答案 1 :(得分:1)
您需要将数字转换为Base 26(Hexavigesimal - snappy name!)
Wikipedia article on Hexavigesimal给出了Java中的示例代码 - 您应该能够很容易地调整它。
注意:你不能仅使用转换算法将你提到的长号码变为4-6大写字母(你在Base 26中的例子是BCKSATKEBRYBXJ)。如果您需要简短的转换,您只有两个选项: