#include <stdio.h>
#include <stdint.h>
uint16_t hex_to_uint(const char *str) {
// Your logic here
uint16_t result = 0;
for (int i = 0; str[i] != '\0'; i++) {
char c = str[i];
uint8_t value;
if (c >= '0' && c <= '9') {
value = c - '0';
}
else if (c >= 'A' && c <= 'F') {
value = c - 'A' + 10;
}
else if (c >= 'a' && c <= 'f') {
value = c - 'a' + 10;
}
else {
// Invalid character - return 0
return 0;
}
// Shift left by 4 bits (multiply by 16) and add new value
result = (result << 4) | value;
}
return result;
}
int main() {
char hex[10];
scanf("%s", hex);
printf("%u", hex_to_uint(hex));
return 0;
}
Input
1A3F
Expected Output
6719