整数进制转化器(模板):适用于各种进制转换

 1 /*
 2 s[]: 原进制数字,用字符串表示
 3 s2[]: 转换结果,用字符串表示
 4 d1: 原进制数
 5 d2: 需要转换到的进制数
 6 返回值: null
 7 说明:如果需要转化成16进制中,使得结果大于9的显示小写字母(例如显示3e而不要3E,虽然其实是一样的), 
 8 只需要将下面的'A'全换成'a'即可 
 9 */
10 #include<cstdio>
11 #include<cmath>
12 #include<algorithm>
13 #include <string.h>
14 #include <iostream>
15 using namespace std;
16 void conversion(char s[],char s2[],long d1,long d2)
17 {
18     long i,j,t,num;
19     char c;
20     num=0;
21     for (i=0;s[i]!='';i++)
22         {
23         if (s[i]<='9'&&s[i]>='0') t=s[i]-'0'; else t=s[i]-'A'+10;
24         num=num*d1+t;
25         }
26     i=0;
27     while(1)
28         {
29         t=num%d2;
30         if (t<=9) s2[i]=t+'0'; else s2[i]=t+'A'-10;
31         num/=d2;
32         if (num==0) break;
33         i++;
34         }
35        
36       s2[i+1]='';
37       for(int k=i;k>=0;k--)
38       printf("%c",s2[k]);  //逆输出   
39 }
40 int main()
41 {
42     char s[100000],s2[100000];
43     strcpy(s,"23456");//可以使用用strcpy()函数方便赋值//cin>>s
44     long d1=8,d2=16;
45     conversion(s,s2,d1,d2);    
46     return 0;
47  } 

 注意:上述模板支持整数间的进制转换,但不支持小数间的进制转换

文章来源:https://blog.csdn.net/ls158390/article/details/88429156

原文地址:https://www.cnblogs.com/xwh-blogs/p/12490194.html