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 count=0;
    char str[8];
    if(num == 0)
        printf("0");
    if (base == 16){
        for(int i=0;(num >> 4*i)>0;i++){
            if(((num >> 4*i) & 0xF) >= 0 && ((num >> 4*i) & 0xF) <= 9){
                str[i] = ((num >> 4*i) & 0xF) + '0';
                count++;
            }
            else if(((num >> 4*i) & 0xF) >= 10 && ((num >> 4*i) & 0xF) <= 15){
                str[i] = ((num >> 4*i) & 0xF) + 'A' - 10;
                count++;
            }
        }
    }
    else if (base == 2){
        for(int i=0;(num >> i)>0;i++){
            str[i] = ((num >> i) & 1) + '0';
            count++;
        }
    }
    for(int j=0;j<count;j++)
        printf("%c", str[count-j-1]);
}

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