/*语法:conversion(char s1[],char s2[],long d1,long d2); |
*参数: |
*s[]: 原进制数字,用字符串表示 |
*s2[]: 转换结果,用字符串表示 |
*d1: 原进制数 |
*d2: 需要转换到的进制数 |
*返回值: null |
*注意:高于9的位数用大写'A'~'Z'表示,2~16位进制通过验证 |
*/ |
void conversion ( char s[], char s2[], long d1, long d2 ) |
{ |
long i,j,t,num; |
char c; |
num=0; |
for ( i=0; s[i]!= '\0' ; i++ ) |
{ |
if ( s[i]<= '9' &&s[i]>= '0' ) t=s[i]- '0' ; |
else t=s[i]- 'A' +10; |
num=num*d1+t; |
} |
i=0; |
while ( 1 ) |
{ |
t=num%d2; |
if ( t<=9 ) s2[i]=t+ '0' ; |
else s2[i]=t+ 'A' -10; |
num/=d2; |
if ( num==0 ) break ; |
i++; |
} |
for ( j=0; j<i/2; j++ ) |
{c=s2[j]; s2[j]=s[i-j]; s2[i-j]=c;} |
s2[i+1]= '\0' ; |
} |