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));}