字符串转化为16进制数,比如输入字符串char *string="1a5e";经转化后就成为了一个16进制数:0x1a5e
int a16toi( char *pNumber)
{
int len,pos,ret = 0;
len = strlen(pNumber);
pos = len;
while(pos--)
switch(pNumber[pos])
{
case '0': break;
case '1': ret += ( (len-pos-1) ? 1 * 1<<(4* (len-pos-1)) : 1); break;
case '2': ret += ( (len-pos-1) ? 2 * 1<<(4* (len-pos-1)) : 2); break;
case '3': ret += ( (len-pos-1) ? 3 * 1<<(4* (len-pos-1)) : 3); break;
case '4': ret += ( (len-pos-1) ? 4 * 1<<(4* (len-pos-1)) : 4); break;
case '5': ret += ( (len-pos-1) ? 5 * 1<<(4* (len-pos-1)) : 5); break;
case '6': ret += ( (len-pos-1) ? 6 * 1<<(4* (len-pos-1)) : 6); break;
case '7': ret += ( (len-pos-1) ? 7 * 1<<(4* (len-pos-1)) : 7); break;
case '8': ret += ( (len-pos-1) ? 8 * 1<<(4* (len-pos-1)) : 8); break;
case '9': ret += ( (len-pos-1) ? 9 * 1<<(4* (len-pos-1)) : 9); break;
case 'a': ret += ( (len-pos-1) ? 10 * 1<<(4* (len-pos-1)) : 10); break;
case 'b': ret += ( (len-pos-1) ? 11 * 1<<(4* (len-pos-1)) : 11); break;
case 'c': ret += ( (len-pos-1) ? 12 * 1<<(4* (len-pos-1)) : 12); break;
case 'd': ret += ( (len-pos-1) ? 13 * 1<<(4* (len-pos-1)) : 13); break;
case 'e': ret += ( (len-pos-1) ? 14 * 1<<(4* (len-pos-1)) : 14); break;
case 'f': ret += ( (len-pos-1) ? 15 * 1<<(4* (len-pos-1)) : 15); break;
case 'A': ret += ( (len-pos-1) ? 10 * 1<<(4* (len-pos-1)) : 10); break;
case 'B': ret += ( (len-pos-1) ? 11 * 1<<(4* (len-pos-1)) : 11); break;
case 'C': ret += ( (len-pos-1) ? 12 * 1<<(4* (len-pos-1)) : 12); break;
case 'D': ret += ( (len-pos-1) ? 13 * 1<<(4* (len-pos-1)) : 13); break;
case 'E': ret += ( (len-pos-1) ? 14 * 1<<(4* (len-pos-1)) : 14); break;
case 'F': ret += ( (len-pos-1) ? 15 * 1<<(4* (len-pos-1)) : 15); break;
default:
break;
}
return ret;
}