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
    char buff[20];
    int buff_idx = 0;
    // zero edge case
    if(num == 0) {
        printf("0");
        return;
    }

    while(num > 0 ) {

        int digit = num % base;
        char digit_str;

        // base 16
        if (base == 16) {
            
            if(digit >= 10) {
                
                digit_str = 'A' + (digit - 10);
                
            } else {

                digit_str = '0' + digit;
            }

            buff[buff_idx++] = digit_str;
        }

        // base 2
        if(base == 2) {

            buff[buff_idx++] = '0' + digit;

        }
        
        num = num / base;
        
    }

    buff_idx--;

    while(buff_idx >= 0) {
        printf("%c", buff[buff_idx--]);
    }



}

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