116. Convert Decimal Number to Binary or Hex Without itoa function

Back To All Submissions
Previous Submission
Next Submission

Code

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

void print_base(uint16_t num, uint8_t base) {
    int bits = (num <= 255) ? 8 : 16;
    int started = 0;
    if ( base == 2){
        for(int i = bits -1; i >= 0;i-- ){
            int temp = ((num >> i)&1);
            if(temp == 1 ){
                started = 1;
            }
            if(started){
                printf("%d",temp);
            }
        }
    }
    else{
        for(int i = bits - 4; i >= 0; i -= 4){
            int temp = ((num >> i) & 0xf);
            if(temp != 0) started = 1;
            if (temp < 10)
    printf("%d", temp);
else
    printf("%c", temp - 10 + 'A');
        }
    }
    if (!started)
        printf("0");
}

int main() {
    uint16_t num;
    uint8_t base;
    scanf("%hu %hhu", &num, &base);

    print_base(num, base);
    return 0;
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote