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
    // uint32_t res =0;
    char arr[10]={0};
    uint8_t index=0;
    // for (int i=7; i>=0; i--)
    // {
    //     printf("%d",(num>>i)&0x01);
    // }
    // // printf("res =%d \n",res);
    // while(num != 0)
    // {
    //     arr[index] = (num>>index)&0x01;
    //     // num = (num>>index)&0x01;
    //     printf("(num>>index)&0x01=%d num%2=%d\n",(num>>index)&0x01,num%2);
    //     index++;
    //     num = num/2;
    // }

    if(num == 0)
    {   
        printf("0");
        return;
    } 
    const char ct_arr[16] = {'0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F'};
    while(num != 0)
    {
        arr[index] = ct_arr[num%base];        
        num /= base;
        index++;
    }
    for (int i=index-1; i>=0; i--)
    {
        printf("%c",arr[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