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) {
    // Your logic here
    if (num == 0) {
        printf("0");
    }
    else {
        int bits_2 = log2(num);   
        int bits_16 = bits_2 / 4; 

        if (base == 2) {
            for (int i = bits_2; i >= 0; i--) {
                printf("%u", (num >> i) & 1);
            }
        } 
        else if (base == 16) {
            for (int i = bits_16; i >= 0; i--) {
                printf("%X", (num >> (4 * i)) & 0xF);
            }
        }
    }
}

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