任意进制转换算法

来源:互联网 发布:永诚网络 编辑:程序博客网 时间:2024/05/01 23:05

语法: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';
}

0 0
原创粉丝点击