#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; }
Test Cases
Test Results
Input
1A3F
Expected Output
6719