#include <stdio.h>
unsigned long HEX2DEC(const char *s)
{
int i,t;
unsigned long sum=0;
for (i=0; s[i]; i++)
{
if ( (s[i]=='0' && s[i+1]=='x') || (s[i]=='\\' && s[i+1]=='x') )
{
i++;
continue; //0xff, \x64, 去前缀
}
if ( s[i]>='0' && s[i] <= '9' )
t = s[i]-'0';
else if ( s[i]>='A' && s[i] <= 'F')
t = s[i]-'A'+10;
else if ( s[i]>='a' && s[i]<='f' )
t = s[i]-'a'+10;
else
break;
sum=sum*16+t;
}
return sum;
}
int main()
{
const char *s="ABCD1234";
printf("%s -- %lu\n", s, HEX2DEC(s));
return 0;
}
转载于:https://my.oschina.net/guyson/blog/191006