需要将十进制转换为基数32,什么错了? base 32 = 0-9 A-V

时间:2016-02-23 04:23:58

标签: base32

这是我在c中的代码,需要从十进制转换为基数32。获取奇怪的符号作为输出。

 #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);
            }
        }

base 32 = 0-9 A-V

 int main()
                {
                    unsigned int num =100;

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

                    return 1;
                }
            should get 34.

1 个答案:

答案 0 :(得分:0)

您在循环中移动masknum。这意味着你总是在检查相同的位,只是四处移动。只移动其中一个值mask

您也可以通过比较跳过数字9。

使用调试器,您可以轻松查看发生的情况以及发生的错误。