给你个痛快的,随便输入吧……输入一百个十六进制也能帮你转换完成……
#include
#include
#define N 200
int multiply(int *b,int m,int n,int k)
{
int i,j,temp,flag,*p;
for(i=flag=0;i
{
flag=temp=0;
p=b;
for(j=0;j<=k;j++)
{
p=b+j;
if(flag!=1)
*p*=m;
else
{
*p=*p*m+temp;
flag=0;
}
if(*p>=10)
{
temp=*p/10;
*p=*p%10;
flag=1;
if(j==k)
k++;
}
}
}
return k;
}
int plus(int *a,int *b,int k)
{
int i,flag,temp,*p,*q;
temp=flag=0;
for(i=0;i
{
p=a+i;
q=b+i;
if(flag!=1)
*p+=*q;
else
{
*p=*p+*q+temp;
flag=0;
}
if(*p>=10)
{
temp=*p/10;
*p=*p%10;
flag=1;
if(i==k)
k++;
}
}
return k;
}
void main()
{
char str[N];
int i,j,k,l,a[2*N],b[2*N],c[N];
scanf("%s",str);
for(i=0;i<2*N;i++)
a[i]=b[i]=0;
for(i=0;i
c[i]=0;
j=strlen(str);
b[0]=1;
for(i=0;i
{
if(str[i]-48<10&&str[i]-48>=0)
c[j-i-1]=str[i]-48;
else
if(str[i]-65<6&&str[i]-65>=0)
c[j-i-1]=str[i]-65+10;
else
if(str[i]-97<6&&str[i]>=0)
c[j-i-1]=str[i]-97+10;
else
printf("\n输入错误!");
}
for(i=j-1;i>=0;i--)
{
k=0;
k=multiply(b,16,i,k);
k=multiply(b,c[i],1,k);
if(i==j-1)l=k;
k=plus(a,b,k+5);
for(j=0;j<=k;j++)
b[j]=0;
b[0]=1;
}
printf("\n");
for(i=l;i>=0;i--)
printf("%d",a[i]);
printf("\n");
}