这是我在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.
答案 0 :(得分:0)
您在循环中移动mask
和num
。这意味着你总是在检查相同的位,只是四处移动。只移动其中一个值mask
。
您也可以通过比较跳过数字9。
使用调试器,您可以轻松查看发生的情况以及发生的错误。