Convert Decimal Number to Binary or Hex Without itoa function

Code

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

void print_base(uint16_t num, uint8_t base) {
    if (base == 2) {
        if (num < 2) {
            printf("%d", num);
        } else {
            int l = log2(num);
            for (int i = l; i >= 0; i--)
            printf("%d", (num >> i) & 1);
        }
    } else {
        int l = 0;
        if (num >= 4096) {
            l = 3;
        } else if (num >= 256) {
            l = 2;
        } else if (num >= 16) {
            l = 1;
        }
        for (int i = l; i >= 0; i--) {
            int tmp = (num >> i*4) & 0xF;
            if (tmp < 10) {
                printf("%d", tmp);
            } else {
                printf("%c", 'A' + tmp - 10);
            }
        }
    }
}

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