#include <stdio.h> #include <stdint.h> uint16_t hex_to_uint(const char *str) { // Your logic here char * digit = (char *)str; uint16_t result = 0; while(*digit != '\0'){ result = result << 4; // [0, 9] if( *digit >= '0' && *digit <= '9'){ result += *digit - '0'; }else if(*digit >= 'A' && *digit <= 'F') { result += *digit - 'A'+ 10; }else if (*digit >= 'a' && *digit <= 'f'){ result += *digit - 'a'+ 10; } digit++; } return result; } 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