Convert Decimal Number to Binary or Hex Without itoa function

Code

#include <stdio.h>
#include <stdint.h>

void print_base(uint16_t num, uint8_t base){
    if(num==0){printf("0"); return;}
char arr[500];int i=0,re,j;
    if(base==2){
        while(num){
        arr[i]=(num%2)+'0';
        i++;
        num=num/2;}
}
else{
    while(num){
        re=num%16;
        if(re>9){
            if(re==10){arr[i]='A';
            i++;}
            else if(re==11){arr[i]='B';i++;}
            else if(re==12){
                arr[i]='C';i++;
            }
            else if(re==13){
                arr[i]='D';i++;
            }
            else if(re==14){
                arr[i]='E';i++;
            }
            else{
                arr[i]='F';i++;
            }
        }
        else{
            arr[i]=re+'0';
            i++;
        }
        num=num/16;
    }
}
arr[i]='\0';

for(j=i-1;j>=0;j--){
    printf("%c",arr[j]);
}
}
int main() {
    uint16_t num;
    uint8_t base;
    scanf("%hu %hhu", &num, &base);

    print_base(num, base);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

10 2

Expected Output

1010