C语言中关于进制转化问题

请问如何用htoi函数将十六进制组成的字符串转化成十进制数(前面可能包含0X或0x)

int htoi(const char *s)
{
if( !s )return 0;

if( *s == '0' )
{
    s++;
    if( *s == 'x' || *s == 'X' )s++;
}

int n = 0;
while( *s )
{
    n <<= 4;
    if( *s <= '9' )
        n |= ( *s & 0xf );
    else
        n |= ( (*s & 0xf) + 9 );
    s++;
}
return n;

}

你自己写一个不就行了,每次读1个字节,16进制只有0~f,可以从字符串的头开始读取,比较好判断,遇到X就说明数据开始了,每次读1个字节,下次在读的时候
就把之前读出来的乘以16,最后读到字符串完,就得到你要的数了。