一、十六进制转换为十进制
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;
}