转换url的16进制编码

例如,把字符串"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 以后总是把小写字母转换为大写的。

updatedupdated2022-02-222022-02-22