将数字转换为字母组合

我需要将1到6000000之间的数字转换为像ABCDE这样的字母组合。 少写字母更好。 但我猜我需要4或5。

有人能指出我正确的方向,如何编写一个算法将数字转换为字母和背面? 只有AZ。 (帽)。

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

Hexavigesimal维基百科文章包含转换为基础26的代码。

字母表中有26个字母。

TYou有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]如果你想在结果中每个十进制数字有一个字符,那么你将需要十个字母字符。 但是如果你从二进制表示转换,只需用’A’替换​​每个0,用’B’替换每1 …

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

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

  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)。

您可以采用任何标准算法,在十进制到其自己的基数之间进行转换。 可以参考数字基数之间的转换以获得帮助。