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) {
    if (base == 2) {
        if (num > 0) {
            int count = 0;
            for (int i = 7; i >=0 ; i--) {
                count += (num >> i) & 1;
                if (count > 0) { printf("%d", (num >> i) & 1); } // replace leading zeros 000101 -> 101
            }
        }
        else { printf("%d", num); }
    }
    if (base == 16) {
        for (int i = 1; i >= 0; i--) {
        printf("%X", (num >> (i * 4)) & 0xF);
        }
    }
}

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