Saturday, January 14, 2012

Base Conversion :: AnyBase(Xbase) ToDecimal(10 base) Conversion

#include<stdio.h>
#include<stdlib.h>
#include<math.h>
#include<string.h>

long to_decimal(char num[],int base){
int i,k,j,from=0;
long temp=0;
k=1;
if(num[0]=='-'){
from=1; k=-1;
}
for(i=from;num[i];i++){
if(num[i]>64&&num[i]<91)
num[i]-=55;
else
num[i]-=48;
if(num[i]>=base)
return 0;
}
i-=from;
for(j=from,i--;i>=0;i--,j++)
temp+=num[j]*(long)pow(base,i);
return temp*k;
}
int main()
{
int i,n;
char ch[1009];
while(scanf("%d\n",&n)==1)
{
gets(ch);
printf("%ld\n",to_decimal(ch,n));
}
return 0;
}

No comments:

Post a Comment