首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从一个长整数中生成唯一可读的字符串

从一个长整数中生成唯一可读的字符串
EN

Stack Overflow用户
提问于 2013-05-26 02:11:07
回答 2查看 221关注 0票数 1

我有这样的长整型数字: 5291658276538691055

我如何通过编程将这个数字转换为4-6个大写字母,这是一个唯一的组合,也可以反向返回到这个数字?

例如,使用OBJ-C。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-05-26 02:14:37

您需要将数字转换为基数26 (Hexavigesimal - snappy name!)

Wikipedia article on Hexavigesimal给出了用Java编写的示例代码--您应该能够很容易地适应它。

注:您不能仅使用转换算法获得您提到的4-6个大写字母的长数字(您在基数26中的示例是BCKSATKEBRYBXJ)。如果你需要这么短的转换时间,你只有两个选择:

  • 查询表(存储映射,例如5291658276538691055 = ABCDEF)。显然,只有当您有一组离散的numbers.
  • Including附加字符(例如小写+数字)时才有用。
票数 1
EN

Stack Overflow用户

发布于 2013-05-26 02:12:48

有26个大写字母;

其中6个可代表26^6个数字(308915776);

所以,不是。您正在尝试将一个更大的数字范围映射到一个更小的范围,这是不可逆的。

此外,log 5291658276538691055 / log 26小于14,所以如果14个字母对您来说很合适,那么只需将数字转换为基于26的数字并将数字映射到字母即可。

还有一件事-如果数字的范围足够小,你可以对数字进行一些操作(例如,减去最小值)并对其进行编码,这将花费较少的数字。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/16752529

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档