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){
    if(num == 0)
    {
        printf("0");
        return;
    }

    char digits[17] = "0123456789ABCDEF";
    char res[20];

    int i = 0;

    while(num>0)
    {
        res[i++] = digits[num%base];
        num /= base;
    }
    // res[i] = '\0';
    // printf("%s\n", res);

    for(int j=i-1; j>=0; j--)
    {
        // putchar(res[j]);
        printf("%c", res[j]);
    }

}

// void print_base(uint16_t num, uint8_t base) {
//     // Your logic here

//     if(base == 2)
//     {
//         int temp = 0;
//         uint16_t num1 = num;
//         for(int i=0; i<=15; i++)
//         {
//             num1 = num1/2;
//             temp++;
//             if(num1 == 0)
//             {
//                 break;
//             }
//         }
//         // printf("%d\n",temp);
//         for(int i=temp-1; i>=0; i--)
//         {
//             printf("%d", (num>>i)&0x1);
//         }
//     }

//     if(base == 16)
//     {
//         int temp = 0;
//         uint16_t num1 = num;
//         for(int i=0; i<=13; i++)
//         {
//             num1 = num1/16;
//             temp++;

//             if(num1 == 0)
//             {
//                 break;
//             }
//         }
//         // printf("%d\n",temp);

//         for(int i=temp-1; i>=0; i--)
//         {
//             char c;
//             uint8_t tem = (num>>(4*i) & 0xF);
//             if(tem>=10)
//             {
//                 c = (tem-10+'A');
//             }
//             else
//             {
//                 c = tem + '0';
//             }
//             // num = num/16;
//             printf("%c", c);
//         }
//     }
// }

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