2016-02-23 29 views
0

這是我的c代碼,需要從十進制轉換爲基數32。獲取奇怪的符號作爲輸出。需要將小數轉換爲基數32,最新錯誤? base 32 = 0-9 A-V

#include <stdio.h> 
     char * f(unsigned int num){ 
      static char base[3]; 
      unsigned int mask=1,base32=0; 
      int i,j; 

      for (j=0;j<3;j++) 
      for (i=0;i<5;num<<1,mask<<1){ 
       if (mask&num){ 
        base32 = mask|base32; 
        base32<<1; 
       } 
       if (base32<9) 
        base[j]=base32+'0'; 
       else  
        base[j]=(char)(64+base32-9); 
      } 
     } 

基座32 = 0-9甲-V

int main() 
       { 
        unsigned int num =100; 

        printf("%s\n",f(num)); 

        return 1; 
       } 
      should get 34. 

回答

0

你在你的循環移位兩者masknum。這意味着你總是檢查相同的位,只是移動。只移動其中一個值,即mask

另外,您正在跳過數字9與您的比較。

使用一個調試器,你可以很容易地看到發生了什麼以及如何出錯。