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
    char out[17];
    char *ptr = out;
     if (base == 2) {
        if (num) {
            for (int i = 15; i>=0; i--)
                if ((num>>i) >= 1)
                    *(ptr++) = ((num >> i) & 0x01) + '0';
        }
        else *(ptr++) = '0'; //num=0
    } //base 2
    else if (base == 16) { //base 16
    if (num) {
        //char hexd;
        uint8_t val = 0;
        for (int i = 3;i>=0;i--)
            if (num>>(i*4)) {
            val = (num>>(i*4)) & 0x0F;
            *(ptr++) = (val < 10) ? ('0' + val) : ('A' + val - 10);
            //*(ptr++) = ((num >> i) & 0x01) + '0';
            }
        
        }
    
    else *(ptr++) = '0'; //num=0
    }
    *ptr = '\0'; //terminate
    printf("%s",out);
    
}

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