Нужно преобразовать десятичную в базу 32, что не так? основание 32 = 0-9 AV
Это мой код в 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);
}
}
основание 32 = 0-9 AV
int main()
{
unsigned int num =100;
printf("%s\n",f(num));
return 1;
}
should get 34.
1 ответ
Вы сдвигаете оба mask
а также num
в вашей петле. Это означает, что вы всегда проверяете одно и то же, просто перемещаетесь. Только сдвиньте одно из значений, mask
,
Также вы пропускаете номер 9 со своим сравнением.
Используя отладчик, вы можете легко увидеть, что происходит, и как это происходит не так.