进制转换算法

K进制转化成十进制:

原理:把K进制数按照位存放,从头遍历,每次乘K

//k进制转化成10进制的代码
#include<bits/stdc++.h>
using namespace std;
int to_Int(char a) //字母转化成数字的函数
{
    if(a>='0'&&a<='9')
        return (a-'0');
    else
        return (a-'A'+10);//字母转化成十进制要加10
}

void f(string s,int k)  //进行进制转换的函数
{
    long long res =0;
    for(int i=0;i<s.size();++i)
    {
        res*=k;
        res+= to_Int(s[i]);
    }
    printf("%lld\n",res);
}

int main()
{
    string s;int k;
    while(cin>>s)
    {
        cin>>k;
        f(s,k);
    }
    return 0;
}

 十进制转化成K进制:

 原理:不断的用 十进制数模 k,十进制数除k作为新的被除数

 

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

int main()
{
    int n,k;
    stack<char> s;
    string res;
    cin>>n>>k;
    
    if(n==0) //如果输入的10进制数是0 直接输出
    {
        printf("0");
        exit(0);
    }
    
    while(n)
    {
        char a;int cnt;
        
        cnt=n%k;
        n=n/k;
        if(cnt <=9) a=cnt+'0';//余数小于等于9的时候,以数字表示
        else a=cnt-10+'A';//余数大于等于10的时候,用字母表示
        s.push(a);
    }
    while(!s.empty())
    {
        printf("%c",s.top());
        s.pop();
    }
}

 a进制转化成b进制的话就把这两个结合一下,先把a进制转化成10进制,然后用10进制来转化成b进制

posted @ 2023-04-07 14:36  小花护符  阅读(28)  评论(0编辑  收藏  举报