Convert Decimal Number to Binary or Hex Without itoa function

Code

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

void print_hex(uint8_t num){
    char val;
    switch(num){
            case 10:
                val = 'A';
                break;
            case 11:
                val = 'B';
                break;
            case 12:
                val = 'C';
                break;
            case 13:
                val = 'D';
                break;
            case 14:
                val = 'E';
                break;
            case 15:
                val = 'F';
                break;
            default:
            val = '0' + num;
    }
    printf("%c", val);
}

void print_base(uint16_t num, uint8_t base) {
    if (num == 0){
        printf("0");
        return;
    }
    if (base == 2){
        size_t size;
        bool valid = false;
        for(size_t i=15; i<16; i--){
            bool bit = num>>i & 1;
            if(bit){
                valid = true;
            }
            if (valid){
                printf("%c", bit?'1':'0');
            }
        }
    }
    if(base == 16){
        uint8_t left = (num>>4) & 0b1111;
        uint8_t right = num & 0b1111;
        print_hex(left);
        print_hex(right);
    }
}

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