欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

进制转换

程序员文章站 2022-07-13 13:17:01
...
//编译器用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;
}

上一篇: 进制转换

下一篇: 进制转换