DecToAny(int n, int m)函数则是十进制数转任意进制数,形参n为输入的数据,形参m为要转成m进制的意思。
#include<stdio.h>#include<stdlib.h>#include<string.h>#include<math.h>intFuntion(char*array,int len){int*d =(int*)malloc(len *sizeof(int));int num;//进制数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);elseif(array[i]>64&& array[i]<71)//A~F
sum +=(array[i]-55)*pow(16, len - i -2);elseif(array[i]>96&& array[i]<103)//a~f
sum +=(array[i]-87)*pow(16, len - i -2);}break;}default:break;}return sum;}intDecToAny(int n,int m)// n表示数据,m表示要转成m进制{if(n < m)return n;elsereturnDecToAny(n / m, m)*10+ n % m;}intmain(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));}