任意进制间的转换(2~36进制),用数组存储要转换的数字,结果返回整型的十进制数。
/************************************************************************/ /* a是要转换的数,bit是原本的进制(2~36) */ /************************************************************************/ long toTen(char a[],int bit) { long i,b=1,sum=0; int length=strlen(a); for (i=length-1;i>=0;i--) { if (a[i]>='A') { sum+=(a[i]-'A'+10)*b; b*=bit; } else { sum+=(a[i]-'0')*b; b*=bit; } } return sum; }
主函数:
int main() { int aNum; char bNum[20]; //以整型读入,转换字符串带入函数,进行进制转换 cin>>aNum; sprintf(bNum,"%d",aNum); cout<<toTen(bNum,8)<<endl; //假设原本是8进制,代入函数后返回10进制的数 //以字符串读入,直接代入函数,进行进制转换 cin>>bNum; cout<<toTen(bNum,2)<<endl; //假设原本是2进制 //把二进制10110转换为十六进制 aNum=toTen("10110",2); itoa(aNum,bNum,16); cout<<bNum<<endl; return 0; }