美文网首页
进制转换

进制转换

作者: Alan66 | 来源:发表于2017-05-24 17:56 被阅读0次
    //编译器用G++不然c++函数会CE,因为C++不支持itoa函数
    /*
    [itoa](https://baike.baidu.com/item/itoa)() 函数有3个参数:第一个参数是要转换的数字,第二个参数是要写入转换结果的目标字符串,第三个参数是转移数字时所用的基数(进制)。在上例中,转换基数为10,就意味着以10为转换进制。10:十进制;2:二进制...
    
    itoa 并不是一个标准的C函数,它是Windows特有的,如果要写跨平台的程序,请用sprintf。
    
    标准库中有sprintf,功能比这个更强,用法跟printf类似:
    
    char str[255];
    
    sprintf(str, "%x", 100); //将100转为16进制表示的字符串
    */
    #include<cstdio>
    #include<cstdlib>
    #include<iostream>
    using namespace std;
    
    long  toTen(char a[], int bit)      //任意进制转换为10进制
    {
        int length = strlen(a);
        int i, b = 1, sum = 0; //i要做数组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()          //~itoa函数为10进制转换为任意进制
    {
        int a,n;
        char temp[200];
        while(cin >> a >> n != NULL)
        {
            int flag = 0;
            if(a < 0)
            {
                flag = 1;
                a = -a;
            }
            if(flag) cout << '-';
            _itoa(a, temp, n);
            for(int i = 0;temp[i];i++)          //判断16进制中的字母是否需要大小写
            {
                if(temp[i] >= 'a'&&temp[i] <= 'z')
                    temp[i] = temp[i] - 32;
            }
            cout << temp << endl;
        }
        return 0;
    }
    
    

    相关文章

      网友评论

          本文标题:进制转换

          本文链接:https://www.haomeiwen.com/subject/vpuoxxtx.html