十六进制 转 十进制【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);
}

 

posted @ 2013-01-17 22:37  忍者职业  阅读(1378)  评论(1)    收藏  举报