2012-05-08 2 views
0

기본 32 비트 디코딩 한 문자열이 있습니다. 디코딩 할 문자열 또한 32 비트 디코딩 된 문자열의 기초로 모든 문자열을 인코딩하려고합니다. 어떤 방법이든, 알고리즘 (C조차) 또는 API가 있으므로이 문제를 해결할 수 있습니다. 고맙습니다.기본 32 비트 디코딩 된 문자열을 십진수로 변환

+0

가능한 중복 [함께있는 NSString을 인코딩하는 방법 base32 인코딩?] (http://stackoverflow.com/questions/5634759/how-to-encode-nsstring-with-base32-encoding) –

+0

* Base 32 비트 * 란 무엇입니까? '32'는 비트 수가 아닌 인코딩에 사용 된 문자 수를 나타냅니다. – trojanfoe

+0

오케이 죄송 합니다만 관련이있는 알 고지를 알고 계신가요? –

답변

0

나는 당신의 질문을 이해 있는지 확실하지 않습니다,하지만 당신은 10 (10 진수) 수를 기반으로하는 기본 32 수를 변환 할 경우,이 걸릴 :

#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

많이 고맙습니다. Neevek하지만 여기서는 ur 코드를 얻지 못했습니다. ch_i가 있으면 start_ch & result의 값이 될 것입니다. –

+0

''i '> ='a ''이므로 'start_ch'는 'a'-10'이 될 것이므로 'i'는 십진수로'18 '이고 결과는 18입니다. start_ch의 값은 BASE-11 이상을 십진수로 변환하는 데 사용됩니다. – neevek

관련 문제