例如,把字符串"DF"转换成整数 223
char x2c (char *what)
{
char digit;
digit = ((what[0] > 'A') ? ((what[0] & 0xdf) + 10) : (what[0] - '0'));
digit *= 16;
digit += ((what[1] > 'A') ? ((what[1] & 0xdf) + 10) : (what[1] - '0'));
return digit;
}其中最tricky的就是what[0] & 0xdf;原因在于,ascii编码中同一个大小写字母的值总是相差32,也就是小写字母的第6位总为1,大写字母的第6位总为0,执行& 0xdf 以后总是把小写字母转换为大写的。