DecToAny(int n, int m)函数则是十进制数转任意进制数,形参n为输入的数据,形参m为要转成m进制的意思。
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int Funtion(char *array,int len)
{
int sum=0;
switch (array[len-1])
{
case 'B'://2进制转10进制
{
for (int i = len - 2; i >= 0; i--)
{
sum += (array[i]-'0') * pow(2, len - i - 2);
}
break;
}
case 'Q'://8进制转10进制
{
for (int i = len - 2; i >= 0; i--)
sum += (array[i] - '0')*pow(8, len - i - 2);
break;
}
case 'D'://将字符串型的数转成int型十进制数
{
for (int i = 0; i < len-1; i++)
sum += (array[i] - '0')*pow(10, len - i - 2);
break;
}
case 'H'://16进制转10进制
{
for (int i = len - 2; i >= 0; i--)
{
if (array[i] > 47 && array[i] < 58) //0~9
sum += (array[i] - 48)*pow(16, len - i - 2);
else if (array[i] > 64 && array[i] < 71) //A~F
sum += (array[i] - 55)*pow(16, len - i - 2);
else if (array[i] > 96 && array[i] < 103) //a~f
sum += (array[i] - 87)*pow(16, len - i - 2);
}
break;
}
default:break;
}
return sum;
}
int DecToAny(int n, int m)// n表示数据,m表示要转成m进制
{
if (n < m) return n;
else return DecToAny(n / m, m) * 10 + n % m;
}
int main(void)
{
int Length;//数组长度
int s;
char *Data = (char*)malloc(9 * sizeof(char));//数据字符串数组
gets(Data);//输入数据
Length = strlen(Data);
s=Funtion(Data,Length);//功能函数
printf("HEX[%X]\\nDEC[%d]\\nOCT[%o]\\nBIN[%d]\\n",s,s,s,DecToAny(s,2));
}
运行结果