整数进制转化器(模板):适用于各种进制转换
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]!='\0';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]='\0'; 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