一、十六进制转换为十进制
unsigned long HextoDec(char *hex, int length)
{
    int i;
    unsigned long rslt = 0;
    for (i = 0; i < length; i++)
    {
        switch (hex[i])
        {
            case '0': hex[i] = 0;break;
            case '1': hex[i] = 1;break;
            case '2': hex[i] = 2;break;
            case '3': hex[i] = 3;break;
            case '4': hex[i] = 4;break;
            case '5': hex[i] = 5;break;
            case '6': hex[i] = 6;break;
            case '7': hex[i] = 7;break;
            case '8': hex[i] = 8;break;
            case '9': hex[i] = 9;break;
            case 'a': hex[i] = 10;break;
            case 'A': hex[i] = 10;break;
            case 'b': hex[i] = 11;break;
            case 'B': hex[i] = 11;break;
            case 'c': hex[i] = 12;break;
            case 'C': hex[i] = 12;break;
            case 'd': hex[i] = 13;break;
            case 'D': hex[i] = 13;break;
            case 'e': hex[i] = 14;break;
            case 'E': hex[i] = 14;break;
            case 'f': hex[i] = 15;break;
            case 'F': hex[i] = 15;break;
        default: hex[i] = 0;break;
        }
        rslt += (unsigned long)(hex[i]) << (4 * (length - 1 - i));
    }
    return rslt;
}
 二、C++字符串转换为整数
int stringToInt(char *ptr, unsigned int numCount)
{
    uint32_t temp {};
    std::stringstream tempStream;
    tempStream<<std::string(ptr,numCount);
    tempStream>>temp;
    return temp;
}
三、任意进制转换为十进制
char charToHex( char bChar){
  if ((bChar >= 0x30) && (bChar <= 0x39))
    bChar -= 0x30;
  else if ((bChar >= 0x41) && (bChar <= 0x46))//大写字母
    bChar -= 0x37;
  else if ((bChar >= 0x61) && (bChar <= 0x66))//小写字母
    bChar -= 0x57;
  else bChar = 0xff;
  return bChar;
}
 char hexToChar(char bHex){
  if ((bHex >= 0) && (bHex <= 9))
    bHex += 0x30;
  else if ((bHex >= 10) && (bHex <= 15))//大写字母
    bHex += 0x37;
  else bHex = 0xff;
  return bHex;
}
int numToDec(int numForm)
{
  char Arry[32] = {'\0',};
  printf("请输入数据:");
  scanf_s("%s",Arry,32);
  printf("输入的%d进制数据为:%s\n",numForm,Arry);
  int numDec=0;
  int i = 0;
  while (Arry[i] != '\0')
  {
    i++;
  }
  for (int j = 0; j < i; j++)
  {
    numDec += ((charToHex(Arry[j]) * (pow((float) numForm,  (i-j-1)))));
  }
  
  printf("十进制数为:%d\n", numDec);
  return numDec;
}