首页 > 代码库 > 任意的进制转换
任意的进制转换
进制转换我们经常遇到。
遇到这么好模板就抓紧写一下记住吧,虽然不难。
以后博客都来写个思路吧,记录点滴。
进制转换。
1,我们来输入要转换的数字,和这个数字的进制,还有将要转换的进制。
2,因为是任意进制的,我们就同一的转化为10进制的,然后从10进制再转化为我们想要的进制。
2.1 就是转化为10进制的时候:我们先来处理输入的数字(因为是字符类型的,转化为直接能操作的数字,这里是用了阿斯科码与int相应转换,这是c语言基础知识),然后我们将其用转化为10进制 sum 从头开始 挨个来, 别忘了*进制;
2.2就是将这个10进制的数转换为我们想要的进制数了,就是每次除进制取余用数组来存放,直到取到被除数为0 为止。注意在数组中我们存放的顺序是反的,我们需要将数组来倒置。这样我们的想要的结果就出来了。
(注意因为进制16等这些大的进制,所以会出现ABC等这些字母,我们在输入输出转换的时候都要考虑到,需要处理的)
下面贴出代码:
#include<iostream> using namespace std; //进制处理任一进制的转换 void convirsion( char *a ,char* b,int x,int y ) { __int64 sum=0 ; for(int i=0;i<a[i]!=‘\0‘;i++) { if(a[i]>=‘0‘&&a[i]<=‘9‘) sum = sum*x+(a[i]-‘0‘); else sum=sum*x+(a[i]-‘A‘+10); } int k=0; while(sum) { int t = sum%y; if(t>9) b[k++]=t-10+‘A‘; else b[k++]=t+‘0‘; sum/=y; } for(int i=0;i<k/2;i++) { int t = b[i]; b[i]=b[k-1-i]; b[k-1-i] = t; } for(int i=0;i<k;i++) { cout<<b[i]; } cout<<endl; } int main() { char a[50],b[50]; int x,y; while(1) { cin>>a>>x>>y; convirsion(a,b,x,y); } }
好了。
感谢自己坚持。
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。