#include <stdio.h>
#include <stdint.h>
uint16_t hex_to_uint(const char *str) {
// Your logic here
uint16_t result = 0;
while(((*str >= '0') && (*str <= '9')) ||
((*str >= 'A') && (*str <= 'F')) ||
((*str >= 'a') && (*str <= 'f')))
{
result = result<<4; // Make a room
if((*str >= '0') && (*str <= '9'))
{
result = result | ((*str - '0')&0x0F);
}
else if((*str >= 'A') && (*str <= 'F'))
{
result = result | ((*str - 'A'+10)&0x0F);
}
else if((*str >= 'a') && (*str <= 'f'))
{
result = result | ((*str - 'a'+10)&0x0F);
}
str++;
}
return result;
}
int main() {
char hex[10];
scanf("%s", hex);
printf("%u", hex_to_uint(hex));
return 0;
}
Input
1A3F
Expected Output
6719