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
    if(base == 2){
        int flag=0;
        uint8_t ex=0;
        int i;
        if(num == 0) printf("0");
        for(i=7;i>=0;i--){
            
            if((((num>>i) & 0x01) == 0 )&& flag == 1) printf("0");

             if((num>>i) & 0x01 == 1) {
                flag = 1;
                printf("1");
             }
        }
    }
    else if(base == 16){

        int ex1 =0;
        int ex2 =0;

        ex1 = num & 0x0F;
        ex2 = num & 0xF0;
        ex2 = ex2>>4;
        char hex;

       
        hex = (ex2<10)? ('0' + ex2): ('A'+ (ex2-10));
        printf("%c",hex);

        hex = (ex1<10)? ('0' + ex1): ('A'+ (ex1-10));
        printf("%c",hex);


    }
}

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