Convert Decimal Number to Binary or Hex Without itoa function

Code

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


void print2(uint16_t num)
{
     uint8_t vec[16];
     uint8_t len;

    if(num == 0)
    {
        printf("0");
        return;
    }

     while(num)
     {
        vec[len ++] = (num & 0x1);
        num >>= 1;
     }

     for(int i = len - 1; i >= 0; i--)
     {
        printf("%d", vec[i]);
     }
}

void printhex(uint16_t num)
{
     uint8_t vec[16];
     uint8_t len;

     if(num == 0)
    {
        printf("0");
        return;
    }

     while(num)
     {
        uint8_t elem = (num & 0xF);

        if (elem < 10)
        {
            elem  = elem + '0';
        }
        else if(elem == 10)
        {
            elem = 'A';
        }
        else if(elem == 11)
        {
            elem = 'B';
        }
        else if(elem == 12)
        {
            elem = 'C';
        }
        else if(elem == 13)
        {
            elem = 'D';
        }
        else if(elem == 14)
        {
            elem = 'E';
        }
        else if(elem == 15)
        {
            elem = 'F';
        }
    
        vec[len++] = elem;
        num >>= 4;
     }

     for(int i = len - 1; i >= 0; i--)
     {
        printf("%c", vec[i]);
     }
}

void print_base(uint16_t num, uint8_t base) {
    // Your logic here
    if(base == 2)
    {
        print2(num);
    }
    else
    {
        printhex(num);
    }
}

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