进制转换算法
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进制