进制转换

//编译器用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;
}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 1、正整数转二进制 2、负整数转二进制 3、小数转二进制
    衲谁谁阅读 7,823评论 0 0
  • 会不会有这样一个人,无关乎爱情只是希望他过得好。 会不会有这样一个人,你对他的好不求回报。 会不会有这样一个人,你...
    俊白阅读 1,761评论 0 2
  • 西游记中悟空被压制在五行山下,那么其中所说的五行就是金、木、水、火、土的意思。 也就是说,在这之前,作为大道修炼象...
    进光吧阅读 4,136评论 0 1
  • 这些都是个人总结的经验,以及一些网友告诉小么的自我经验。读者可以参考一下,关注小么有更多更新的美肤咨询带给大家
    么么猴阅读 2,600评论 0 2
  • 我的老板是个锤黑。 老板个子不高,头发掉光,挺显老, 跟其他我在网络或生活中见过的锤黑相比,他算黑技较差的。 因为...
    Leon36阅读 1,904评论 0 1