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
    int divider = 0;
    divider = (base == 2?2:16);
    char str[16];
    int index = 0;
    char hexlist[] = "0123456789ABCDEF";

    if(num == 0)
    {
        printf("0");
        return;
    }
    while(num>0)
    {
        if(divider==2)
        {
            str[index++] = hexlist[num&1];
            num >>= 1;
        }
        else
        {
            str[index++] = hexlist[num&0xf];
            num >>= 4;
        } 
    }

    for(int i = index - 1;i>=0;i--)
    {
        printf("%c",str[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