2012-01-24 29 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 ---现在是。 :-) –