Convert Integer to Hex String Without sprintf or itoa functions

Code

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

void print_hex(uint16_t num)
{
    uint8_t leading_zero = 1;

    for (int shift = 12; shift >= 0; shift -= 4) {
        uint8_t nibble = (num >> shift) & 0xF;

        if (nibble == 0 && leading_zero)
            continue;

        leading_zero = 0;

        char ch;
        if (nibble < 10)
            ch = '0' + nibble;
        else
            ch = 'A' + (nibble - 10);

        putchar(ch);
    }

    if (leading_zero)  // number was zero
        putchar('0');
}   


int main() {
    uint16_t num;
    scanf("%hu", &num);
    print_hex(num);
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

255

Expected Output

FF