任意进制间的转换(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;
}