我有这样的长整型数字: 5291658276538691055
我如何通过编程将这个数字转换为4-6个大写字母,这是一个唯一的组合,也可以反向返回到这个数字?
例如,使用OBJ-C。
发布于 2013-05-26 02:14:37
您需要将数字转换为基数26 (Hexavigesimal - snappy name!)
Wikipedia article on Hexavigesimal给出了用Java编写的示例代码--您应该能够很容易地适应它。
注:您不能仅使用转换算法获得您提到的4-6个大写字母的长数字(您在基数26中的示例是BCKSATKEBRYBXJ)。如果你需要这么短的转换时间,你只有两个选择:
发布于 2013-05-26 02:12:48
有26个大写字母;
其中6个可代表26^6个数字(308915776);
所以,不是。您正在尝试将一个更大的数字范围映射到一个更小的范围,这是不可逆的。
此外,log 5291658276538691055 / log 26小于14,所以如果14个字母对您来说很合适,那么只需将数字转换为基于26的数字并将数字映射到字母即可。
还有一件事-如果数字的范围足够小,你可以对数字进行一些操作(例如,减去最小值)并对其进行编码,这将花费较少的数字。
https://stackoverflow.com/questions/16752529
复制相似问题