您的位置:首页 > 其它

任意进制间的转换

2009-08-09 20:24 246 查看
任意进制间的转换(2~36进制)

上次写的2~9进制转换到10进制,因为都是整型的,处理输出输入都比较方便,这次来个比较普遍的。要用数组存储要转换的数字,结果返回整型的十进制数。函数如下:

/************************************************************************/
/* 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;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: