繁体   English   中英

将数字转换为字母组合

[英]convert number to combination of letters

我需要将 1 到 6000000 之间的数字转换为 ABCDE 之类的字母组合。 字母越少越好。 但我猜我需要 4 或 5 个。

有人能指出我正确的方向,比如如何编写一个算法来将数字转换为字母并返回吗? 只有AZ。 (大写)。

您需要转换为 base-26 编号:0 是 A,1 是 B,25 是 Z,26 是 BA,等等。

Hexavigesimal Wikipedia文章包含转换为 base 26 的代码。

字母表中有26个字母。

你有 26^4 < 6 000 000 和 26^5 > 6 000 000

然后你需要 5 个字母,对于你的大部分元素

现在您只需要以 26 为基数表示您的数字。

它们只是在 0... 6 000 000 中写入 X 的一种方法,如下所示:

X = a4*26^4 + a3*26^3+ a2*26^2+ a1*26^1+a0

ai in {0,...25} then you just map ai with a letter from A to Z

最幼稚的做法是让A,B,...,Z代表数字0,1,...,25 ,然后将您的数字转换为基数 26 即可进行字母转换。

例如,在这篇文章这个答案中有一个 C# 实现。

好吧,如果你想从十进制表示转换,那么有 10 个数字 [0-9],如果你想在结果中每个十进制数字有一个字符,那么你将需要十个字母字符。 但是,如果您从二进制表示转换,只需将每个 0 替换为“A”,将每个 1 替换为“B”...

一切都取决于你想怎么做......你决定使用的基地将决定你需要多少个字母。

例如,要从二进制表示中执行此操作,请取数字 mod 2。如果结果为 0,则添加“A”,如果为 1,则添加“B”将数字除以 2(或将其右移一位 position。 ) 重复直到数字为零。

  start with value of  57  
 1.  57 Mod 2 = 1    A
 2.  57 / 2 = 28
 3.  28  Mod 2 = 0   BA
 4.  28 / 2 = 14
 5.  14 mod 2 = 0    BBA
 6.  14 / 2 = 7
 7.   7 mod 2 = 1    ABBA   --- A musical group !
 8.   7 / 2 = 3
 9.   3 mod 2 = 1    AABBA
10.   3/ 2 = 1
11.   1 mod 2 = 1    AAABBA
12.   1 / 2 = 0    --- -done  

您应该将 A = 0、B = 1 等等同于 Z = 25。

这将成为一个以 26 为基数(或基数)的数字系统。

考虑到这一点,两位数字可以表示范围从 0 到 675 (ZZ = 675) 的数字。 3 位代表 26^3。 即 0 - 17575。

使用 5 位数字,您可以表示 0 - 11881375 (ZZZZZ)。

您可以采用任何将十进制转换为自己的基数的标准算法来做到这一点。 可以参考数字基数之间的转换以寻求帮助。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM