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) {
int size = base == 2 ? 16 : 4;
char buffer[size];

if(num == 0) {
    putchar('0');
    return;
}

if(base == 2) {
    for(int i = 0; i < size; i++) {
        buffer[i] = (num&0x01)+'0';
        num = num >> 1;         
    }
} else {
    for(int i = 0; i < size; i++) { 
        uint8_t nibble = num & 0x0f;
        buffer[i] = (nibble < 10) ? nibble + '0' : nibble - 10 + 'A';
        num = num >> 4;
    }
}
int p = 0;
for (int i = size-1; i >= 0; i--) {
 
    if(buffer[i] == '1' || (buffer[i] >= 'A' && buffer[i] <= 'F')) p = 1;
    if(p) putchar(buffer[i]);
}
}

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