#include <iostream.h>
int len(0);
//检验是几进制
int Check(char b[100])
{
for(int i=0;i<10;i++)
{
if(b[i]=='\0')
{
len=i;
break;
}
}
if(b[0]=='0')
{
if(b[1]=='x')
{
if(b[len-1]=='b')
return 2;
else if (b[len-1]=='h')
return 16;
}
else
return 8;
}
else
{
return 10;
}
}
//将十六进制数字母转换成数字
int HexCode(char shex)
{
if(shex>='0' && shex<='9')
return shex-'0';
else if(shex>='a'&&shex<='f')
return shex-'a'+10;
else if(shex>='A'&&shex<='F')
return shex-'A'+10;
else
return 0;
}
//转换函数
void Conver(char str[10],int Step)
{
int sum(0),s(1),Max,Min;
bool hex=false;
switch(Step)
{
case 16:
hex=true;
case 2:
Max=len-2;
Min=2;
break;
case 8:
Max=len-1;
Min=1;
break;
case 10:
for(int j=0;j<len;j++)
cout<<str[j];
cout<<endl;
return;
}
for(int i=Max;i>=Min;i--)
{
if(hex)
sum+=HexCode(str[i])*s;
else
sum+=(str[i]-48)*s;
s*=Step;
}
cout<<sum<<endl;
}
void main()
{
char str[100];
cin.getline(str,100);
switch(Check(str))
{
case 2:
Conver(str,2);
break;
case 8:
Conver(str,8);
break;
case 10:
Conver(str,10);
break;
case 16:
Conver(str,16);
break;
}
}
规则
123 //十进制
0xAB2h //十六进制
0x1110b //二进制
04234 //八进制
int len(0);
//检验是几进制
int Check(char b[100])
{
for(int i=0;i<10;i++)
{
if(b[i]=='\0')
{
len=i;
break;
}
}
if(b[0]=='0')
{
if(b[1]=='x')
{
if(b[len-1]=='b')
return 2;
else if (b[len-1]=='h')
return 16;
}
else
return 8;
}
else
{
return 10;
}
}
//将十六进制数字母转换成数字
int HexCode(char shex)
{
if(shex>='0' && shex<='9')
return shex-'0';
else if(shex>='a'&&shex<='f')
return shex-'a'+10;
else if(shex>='A'&&shex<='F')
return shex-'A'+10;
else
return 0;
}
//转换函数
void Conver(char str[10],int Step)
{
int sum(0),s(1),Max,Min;
bool hex=false;
switch(Step)
{
case 16:
hex=true;
case 2:
Max=len-2;
Min=2;
break;
case 8:
Max=len-1;
Min=1;
break;
case 10:
for(int j=0;j<len;j++)
cout<<str[j];
cout<<endl;
return;
}
for(int i=Max;i>=Min;i--)
{
if(hex)
sum+=HexCode(str[i])*s;
else
sum+=(str[i]-48)*s;
s*=Step;
}
cout<<sum<<endl;
}
void main()
{
char str[100];
cin.getline(str,100);
switch(Check(str))
{
case 2:
Conver(str,2);
break;
case 8:
Conver(str,8);
break;
case 10:
Conver(str,10);
break;
case 16:
Conver(str,16);
break;
}
}
规则
123 //十进制
0xAB2h //十六进制
0x1110b //二进制
04234 //八进制