zl程序教程

您现在的位置是:首页 >  .Net

当前栏目

任意进制转换

2023-02-18 16:35:27 时间

任意进制转换

描述

  求任意两个不同进制非负整数的转换(2进制~16进制),所给整数在long所能表达的范围之内。
不同进制的表示符号为(0,1,...,9,a,b,...,f)或者(0,1,...,9,A,B,...,F)。

  输入只有一行,包含三个整数a,n,b。a表示其后的n 是a进制整数,b表示欲将a进制整数n转换成b进制整数。
a,b是十进制整数,2 =< a,b <= 16。

  输出包含一行,该行有一个整数为转换后的b进制数。输出时字母符号全部用大写表示,即(0,1,...,9,A,B,...,F)。

样例输入:

15 Aab3 7

样例输出

210306
 void conversion( char s[],  long d1, long d2 )
 {
     long  i=0, j, t, num;
     char s2[100];
     char c;
     num = 0;
     for ( i = 0; s[i] != '\0'; i++ )
     {
         if ( s[i] <= '9' && s[i] >= '0' )
             t = s[i] - '0';
         else t = toupper(s[i]) - 'A' + 10;
         num = num * d1 + t;//先转换为10进制
     }
     i = 0;
     while (true)
     {
         t = num % d2;//一直取余,而后除
         if ( t <= 9 )
             s2[i] = t + '0';
         else s2[i] = t + 'A' - 10;
         num /= d2;
         if ( num == 0 )
             break;
         i++;
     }
     for (int k = i; k >=0; k--)
         cout<<s2[k];
     
 }