119. Convert Hexadecimal String to Integer Without strtol or sscanf functions

Back To All Submissions
Previous Submission
Next Submission

Code

#include <stdio.h>
#include <stdint.h>
int get_size(const char *str){
    int size=0;
    const char *temp = str;
    while(*temp){
        size++;
        temp++;
    }
    return size;
}
int get_pow(int num, int pow) {
    int val = 1;

    for (int i = 0; i < pow; i++) {
        val = val * num;
    }

    return val;
}

int hex_str_to_int(char c) {
    int val = 0;

    switch (c){
        case 'A':
        case 'a':
            val = 10;
            break;

        case 'B':
        case 'b':
            val = 11;
            break;

        case 'C':
        case 'c':
            val = 12;
            break;

        case 'D':
        case 'd':
            val = 13;
            break;

        case 'E':
        case 'e':
            val = 14;
            break;

        case 'F':
        case 'f':
            val = 15;
            break;

        default:
            val = c - '0';
            break;
    }
    return val;
}

uint16_t hex_to_uint(const char *str) {
    int i = get_size(str)-1;
    int val = 0;

    while (*str) {
        val += hex_str_to_int(*str) * get_pow(16, i--);

        str++;
    }

    return val;
}

int main() {
    char hex[10];

    scanf("%s", hex);

    printf("%u", hex_to_uint(hex));

    return 0;
}

Solving Approach

 

 

 

Was this helpful?
Upvote
Downvote