AcWing
  • 首页
  • 题库
  • 题解
  • 分享
  • 问答
  • 活动
  • 应用
  • 吐槽
  • 登录/注册

进制转换

作者: 作者的头像   小纸条o--o ,  2021-02-06 23:44:43 ,  阅读 126


2


1
#include <iostream>
#include <string>
#include <stack>
using namespace std;
/*函数:r进制转换成10进制*/
int rToTen(string n,int r){
    //将r进制转为10进制,n是该r进制的字符串表示
    int len = n.length();
    int ans = 0;
    int i = 0;
    while(i<len){
        ans*=r;
        ans+=n[i]-'0';
        i++;
    }
    return ans;
}
//for example:1253 1=1253/1000%10 2=1253/100%10 5=1253/10%10 3=1253/1%10
/*函数:十进制转任意进制*/
string tenToR(int n,int r){
    //十进制n转r进制 ,返回字符串s
    char str[1005];
    stack<int>s;
    while(n){
        s.push(n%r);
        n = n/r;
    }
    int i = 0;
    while(!s.empty()){
        switch(s.top()){
            case 10:
                str[i++] = 'A';
                break;
            case 11:
                str[i++] = 'B';
                break;
            case 12:
                str[i++] = 'C';
                break;
            case 13:
                str[i++] = 'D';
                break;
            case 14:
                str[i++] = 'E';
                break;
            case 15:
                str[i++] = 'F';
                break;
            default:
                str[i++] = s.top()+'0'; //s存储的是int 转成同样数字char类型
        }
        s.pop();
    }
    string st = str;
    return st;
}


int main(){
    cout<<rToTen("10010",2)<<endl;
    cout<<tenToR(18,2)<<endl;
}

3 评论


用户头像
SolitudeAlma   2个月前     回复

r进制转换挺巧妙的,但是没看懂原理是什么,可不可以解释一下


用户头像
Tekola   2个月前     回复

可以使用内置atoi( )函数实现

用户头像
Tekola   2个月前     回复

不是…是itoa( )

你确定删除吗?

© 2018-2021 AcWing 版权所有  |  京ICP备17053197号-1
联系我们  |  常见问题
AcWing
请输入登录信息
更多登录方式: 微信图标 qq图标
请输入绑定的邮箱地址
请输入注册信息