这就是一道简单的进制转换题。
1常规做法:
直接模拟,先进进制转换成10进制,再转换成其他进制,主要注意一下16进制。
代码:
#include <iostream>
using namespace std;
int unhex(char ); //将16进制数A-F转换为10进制。
char hex(int ); //将10进制转换为16进制。
int main()
{
long long i,n=0,n1,n2,x=1;
string str,red="";
cin>>n1>>str>>n2;
for(i=str.size()-1;i>=0;i--)//统一转换为10进制
{
n+=unhex(str[i])*x;
x*=n1;
}
while(n!=0) //转换为相应进制
{
red=hex(n%n2)+red;
n/=n2;
}
cout<<red<<endl;
return 0;
}
char hex(int x)
{
if(x==10) return 'A';
if(x==11) return 'B';
if(x==12) return 'C';
if(x==13) return 'D';
if(x==14) return 'E';
if(x==15) return 'F';
return char(x+'0'); //数字加上‘0’=相应的数字字符
}
int unhex(char x)
{
if(x=='A') return 10;
if(x=='B') return 11;
if(x=='C') return 12;
if(x=='D') return 13;
if(x=='E') return 14;
if(x=='F') return 15;
return int(x-'0‘); //数字字符减’0‘=相应的数字
}
其他方法后续补充。。。。