欢迎访问博客 Http://Lordz.CN
#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 //八进制
posted on 2007-10-19 23:49  Lordz  阅读(466)  评论(0编辑  收藏  举报
Http://Lordz.CN