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) {
    // Your logic here
    int bits,i;
    char hex[5];
    uint8_t extracted;
  
    if (base==2 && num>0){
        if(num>255) bits=16;
        else if(num<=255 && num>=16) bits=8;
        else if (num<16) bits=4;
       
        for(i=bits-1;i>=0;i--){
        printf("%d",(num>>i)&0x01);}
    }
    else if(base==16 && num>0){
       if(num>255) bits=4;
        else bits=2;
        for(i=bits-1;i>=0;i--){
        extracted =((num>>i*4)&0x0f);
        
            if (extracted < 10)
                printf("%c", extracted + '0');
            else
                printf("%c", extracted - 10 + 'A');} 
    }
      if (num==0) printf("%d",num);
}

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