116. Convert Decimal Number to Binary or Hex Without itoa function

Back To All Submissions
Previous Submission
Next Submission

Code

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

void print_base(uint16_t num, uint8_t base) {
    char digits[16];

    if (num == 0)
    {
        digits[0] = '0';
        digits[1] = '\0';

        printf("%s", digits);
        return;
    }

    uint8_t position = 0;

    while(num > 0)
    {
        uint8_t modNum = num % base;
        if (base == 2) 
        {
            digits[position] = (modNum) + '0';
        } else if (base == 16) 
        {
            digits[position] = (modNum < 10) ? ('0' + modNum) : ('A' + modNum - 10);
        }
        position++;
        num /= base;
    }

    digits[position] = '\0';

    //reverse the string
    for(int i = 0; i < position / 2; i++)
    {
        char temp = digits[i];
        digits[i] = digits[position - i - 1];
        digits[position - i - 1] = temp;
    }

    printf("%s", digits);
}

int main() {
    uint16_t num;
    uint8_t base;
    scanf("%hu %hhu", &num, &base);

    print_base(num, base);
    return 0;
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote