Нужно преобразовать десятичную в базу 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 со своим сравнением.

Используя отладчик, вы можете легко увидеть, что происходит, и как это происходит не так.

Другие вопросы по тегам