我需要將1和6000000之間的數字轉換爲像ABCDE這樣的字母組合。 少於一個字母更好。但我猜我需要4或5.將數字轉換爲字母組合
有人可以指出我在正確的方向,如何編寫一個算法將數字轉換爲字母和返回?只有A-Z。 (帽)。
我需要將1和6000000之間的數字轉換爲像ABCDE這樣的字母組合。 少於一個字母更好。但我猜我需要4或5.將數字轉換爲字母組合
有人可以指出我在正確的方向,如何編寫一個算法將數字轉換爲字母和返回?只有A-Z。 (帽)。
您需要轉換爲鹼基編號26:0是A,1是B,25是Z,26是BA等
Hexavigesimal Wikipedia該製品具有轉換代碼,以底座26
要做的最天真的事情是讓A,B,...,Z
代表數字0,1,...,25
,只是將您的號碼轉換爲基數26以獲得字母轉換。
例如,在this answer到this post中有一個C#實現。
字母表中有26個字母。
T優有26^4 < 6 000 000和26^5> 6 000 000
然後,你將需要5個字母,對於大部分的元素
現在,你只需要使用你的號碼底座26
他們只有一個方式寫在0的X ... 6 000 000如下:
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 = 0,B = 1等高達Z = 25。
這將成爲一個數字系統與基底(或基數)26.
考慮到這一點,兩個數字可表示從0數爲 - 675(ZZ = 675)。 3位將代表26^3。即0-17575.
用5位數字表示0-1881375(ZZZZZ)。
您可以採取任何標準算法,將小數點之間轉換爲自己的基數來做到這一點。 Conversion between Number bases可以參考幫助。
那麼如果你想從十進制表示轉換,那麼有10個數字[0-9],如果你想在結果中每個十進制數字有一個字符,那麼你將需要十個字母字符。但是,如果你從二進制表示轉換,只需用'A'替換每個0,然後用'B'替換每個0 ...
一切都取決於你想要怎麼做...你決定使用將決定你需要多少個字母。
作爲一個例子,爲了從二進制表示這樣做, 取號模2.如果結果是0添加一個「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
你能舉一個例子嗎? – danyolgiax
你究竟會如何轉換?7462421會是ABC,XYZ,OKWSM還是什麼? – BlackBear
你需要5個字母。 26^5 = 11881376,而26^4 = 456976. – Coeffect