十进制的任意进制转换

整型数 转换成 字符型数字或字母

 char jz(int a  )//a为待转换数,b为进制数
    {
        char b;
        if(x<=9)
        b=48+x;//转换成数字
        if(x>=10)
        b=55+x;//转换成字母
        return b;
    }

其中主要思想就是:反向取余法

  • 通过求余数获得任意进制中每一位上所代表的数。
  • 通过整除来改变进制的位数。

以下举例:

10进制整数转换为2进制数,采用除2反向取余法:
123/2=61......1
61/2=30......1
30/2=15......0
15/2=7......1
7/2=3......1
3/2=1......1
1/2=0......1
从下往上读取每一次的余数,就是转换的结果:
123=(1111011)2
-----------------------------
10进制整数转换为16进制数,采用除16反向取余法:
123/16=7......11 (用 B 表示)
7/16=0......7
从下往上读取每一次的余数,就是转换的结果:
123=(7B)16

其他进制可参照上述。

       char m[6000]={'0'}; 
       while( a != 0)
        {
            if(a % b <= 9)
            {
                m[i] = a % b + 48;
                i++;
            }
            else
            {
                m[i] = a % b + 55;
                i++;
            }
        a = a / b ;
        }

注意:输出时要从后往前输出,因为数组中前部分保留的是不同进制的高位,后部分保留的是低位。

cout<< "Case " << t << ": " ;
        for(j = i - 1 ; j >= 0 ; j-- )
        cout << m[j] ;
        if(j < 0)
        cout << endl;

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值