2012-05-08 43 views
0

我有一个字符串是基地32位解码现在我想解码该字符串我也想编码任何字符串基地32位解码字符串。 有没有什么办法,任何算法(即使在C)或任何API,所以我可以解决这个问题。 Thanx提前。将基地32位解码字符串转换为十进制

+0

可能重复[如何编码的NSString与base32编码?](http://stackoverflow.com/questions/5634759/how-to-encode-nsstring-with-base32-encoding) –

+0

什么是*基地32位*? '32'表示用于编码的字符数量,而不是一些位数。 – trojanfoe

+0

好的抱歉,但你知道任何算法有关吗? –

回答

0

我不知道如果我理解你的问题,但如果你想要一个基地转化32号到基数10(十进制)号码,借此:

#include <stdio.h>                                   
#include <string.h> 
#include <math.h> 

#define BASE 32 

unsigned int convert_number (const char *s) { 
    unsigned int len = strlen(s) - 1; 
    unsigned int result = 0; 
    char start_ch = 0, ch; 
    while(*s != '\0') { 
     ch = *s; 
     if (ch >= 'a') { 
      start_ch = 'a' - 10; 
     } else if (ch >= 'A') { 
      start_ch = 'A' - 10; 
     } else { 
      start_ch = '0'; 
     } 

     if(len >= 0) 
      result += (ch - start_ch) * pow(BASE, len); 
     else 
      result += (ch - start_ch); 
     ++s; 
     --len; 
    } 

    return result; 
} 
+0

thanx很多Neevek,但我没有得到你的代码在这里,如果ch = i,start_ch&result的值是什么; –

+0

因为''i'> ='a'','start_ch'将会是''''-10',所以'i'是十进制的'18',结果是18.您不需要知道start_ch的值是什么,它用于将BASE-11和以上的数字转换为十进制数。 – neevek

相关问题