从CPU的角度来说,移位和与或操作效率是比较高的,这是本实现的一个关键。
bool HexToInt(int *output, char* szInput) { //assert.... int cbInput = strlen(szInput); for ( ; cbInput > 0; cbInput--, szInput++) { char digit = szInput[0]; if (digit >= \'0\' && digit <= \'9\') digit = (digit - \'0\'); else if (digit >= \'A\' && digit <= \'F\') digit = (digit - \'A\') + 10; else if (digit >= \'a\' && digit <= \'f\') digit = (digit - \'a\') + 10; else return(false); *output = ((*output << 4) | digit); //虽然是十进制数,但是右移/或操作会自动转换为二进制进行 } return(true); }