将一个十六进制数字串转换成为对应的整数的函数
#include <stdio.h>
long int htoi(char *a)
{
long int num = 0;
if ((*a=='0'&&*(a+1)=='x')||*(a+1)=='X')
{
a+=2;
for (; *a!='\0'; a++)
{
if(*a>='0'&&*a<='9')
{
num=num*16+*a-'0';
}
else if (*a>='a'&&*a<='f')
{
num=num*16+*a-'a'+10;
}
else if (*a>='A'&&*a<='F')
{
num=num*16+*a-'A'+10;
}
else
{
return -1;
}
}
}
else
{
return -1;
}
return num;
}
int main(int argc, const char * argv[])
{
char a[100];
long int b;
printf("请输入一个十六进制的数:");
scanf("%s",a);
b=htoi(a);
printf("%lX\n",b);
return 0;
}