2012-01-24 65 views
-1

我有一個字符串「d」,我想轉換成整數4如何將base-26字符串轉換爲整數?

(從OP附加信息)

d應該轉換成十進制值。我希望它是「4」。

對於D =「4」; E =「5」;等等......

它可能有組合。如果機管局來了,價值應該是27,並會相應地增加。

+0

「D」應該轉換爲什麼?十六進制? – Blorgbeard

+1

這聽起來很奇怪......請提供有關您的任務的更多信息。 –

+0

D應該轉換成十進制值。我希望它是「4」。 D =「4」時爲 – joki

回答

2

它看起來這是你想要的(根據你的問題和意見):

unsigned long long convert(string str) 
{ 
    unsigned long long result = 0; 
    for (int i = 0;i<str.length();i++) 
     result+= (str[i] - 'A' + 1) + i*26; 
    return result; 
} 

現在對於"D"它會給4,爲"AA"它會給1+26 = 27等等...

+0

非常感謝!它工作正常! – joki

+0

「AA」給出28而不是27 – hshihab

1

一個字符的字符串不是那麼難:

const int fromBase26 = ('D' - 'A') + 1; 

這將設置fromBase26至4

對於n位數基地解析算法是這樣的:

set output to 0 
while input digits to convert: 
    output *= base 
    output += least significant input digit 
    remove least significant input digit from input 

請注意,這會從輸入的右側讀取數字。

+2

這是對原始問題的相當狹隘的解釋。爲什麼不用'const int fromBase26 = 4;'來響應呢? – tenfour

+0

我不清楚這一點。你可以給我一個例子嗎 ? – joki

0
char* str = "ABC"; 
int i, len, num, pos; 


len = strlen(str); 
num = 0; 
pos = 1; 
for (i = 0; i < len; i++) { 
    num += pos * ((str[i] - 'A') + 1); 
    pos *= 26; 
} 

num將包含結果。

+0

那麼,轉換「A」的結果是什麼? – unwind

+0

1 ---現在是。 :-) –