十六进制 转 十进制【C语言】
从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); }