Convert Hexadecimal String to Integer Without strtol or sscanf functions

Code

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

uint16_t hex_to_uint(const char *str) {
    // Your logic here
    uint16_t len = 0;
    uint16_t p16 = 1;
    uint16_t num = 0;

    while(*(str + len) != '\0')
    {
        len ++;
    }

    for (int16_t i = len - 1; i >= 0; i--)
    {
        uint16_t val = 0;

        if(*(str + i) >= '0' && *(str + i) <= '9')
        {
            val = *(str + i) - '0';
        }
        else if(*(str + i) >= 'A' && *(str + i) <= 'Z')
        {
            val  = *(str + i) - 'A' + 10;
        }
        else if(*(str + i) >= 'a' && *(str + i) <= 'z')
        {
            val  = *(str + i) - 'a' + 10;
        }

        num = (val * p16) + num;

        p16 <<= 4;
    }

    return num;
}

int main() {
    char hex[10];
    scanf("%s", hex);

    printf("%u", hex_to_uint(hex));
    return 0;
}

Solving Approach

 

 

 

Upvote
Downvote
Loading...

Input

1A3F

Expected Output

6719