int Get_0x(const char* str)
{
int sum = 0;
while (isspace(*str))
{
str++;
}
//此时 空格处理结束
int index = 1;
if (*str == '-' || *str == '+')
{
if (*str == '-')
{
index *= -1;
}
else
{
index = 1;
}
str++;
}
if ((*str == '0') && (*(str + 1) == 'x' || *(str + 1) == 'X'))
{
str += 2;
}
else
{
return INT_MAX;
}
while (isxdigit(*str))
{
if (isdigit(*str))
{
sum = sum * 16 + (*str - '0');
}
else if (islower(*str))
{
sum = sum * 16 + (*str - 'a' + 10);
}
else
{
sum = sum * 16 + (*str - 'A' + 10);
}
str++;
}
if (*str == '\0')
return sum * index;
return INT_MAX;
}
int main()
{
printf("%d\n", Get_0x("0x123ABcW"));
printf("%d\n", Get_0x("0X123ABc"));
printf("%d\n", Get_0x(" 0x123ABc"));
printf("%d\n", Get_0x("+0x123ABc"));
printf("%d\n", Get_0x("-0x123ABc"));
printf("%d\n", Get_0x(" +0x123ABc"));
printf("%d\n", Get_0x(" -0x123ABc"));
return 0;
}