进制转换

 1386: 进制转换

 输入一个十进制数N,将它转换成R进制数输出。

#include <bits/stdc++.h>
using namespace std;
//下标为0的是0,下标为10的是A
string s="0123456789ABCDEF";
int main()
{
    int n,r;
    while(cin>>n>>r)
    {
        string c;
        //是0,直接输出
        if(!n)cout<<"0\n";
        else
        {
            //小于0输出符号,取相反数
            if(n<0)cout<<"-",n=-n;
            //n还有数可取就执行循环
            while(n)
            {
                //n%r为当前位(也就是变量n的最后一位),找到当前位的字符,并加到答案c上
                c+=s[n%r];
                //当前位已经拿到丢弃
                n/=r;
            }
            //由于我们从最后一位到了第一位,最后需要倒过来
            reverse(c.begin(),c.end());
            cout<<c<<"\n";
        }
    }
    return 0;
} 

二进制字符串转10进制

#include <bits/stdc++.h>
using namespace std;

int main()
{
    string s;
    //读入要进行转换的字符串s
    cin>>s;
    //设置变量t去保存这个答案
   int t=0;
    for(int i=0;s[i];i++)
    {
        t=t*2+(s[i]-'0');
    }
    cout<<t<<"\n";
}

 给定变量int转换为string

string intToString(int x)
{
    if(x==0)return "0";
    string s;
    while(x)
    {
        s+=x%10+'0';
        x/=10;
    }
    reverse(s.begin(),s.end());
    return s;
}

 如果n不能直接读入,而是一个大数呢

 

posted @ 2020-01-31 15:08  暴力都不会的蒟蒻  阅读(214)  评论(0编辑  收藏  举报