The below coding can correctly print out the result. But i do not understand the last part.
i--;
for(;i>=0;i--)
{
h=h+a[i]*m;
m=m*16;
}
how the i-- and m functions?
Code:
#include<stdio.h>
#include<conio.h>
#include<string.h>
void hd();
void main()
{
printf("Enter Hexadecimal to Decimal:\n");
{
int i,a[20];
unsigned long int h=0,m=1;
char s[20];
printf("Convertion from Hexadecimal to Decimal\n");
printf("Enter a Hexadecimal number\n");
scanf("%s",s);
printf("Decimal Equivalent=");
for(i=0;s[i]!=NULL;i++)
{
switch(s[i])
{
case '0':
a[i]=0;
break;
case '1':
a[i]=1;
break;
case '2':
a[i]=2;
break;
case '3':
a[i]=3;
break;
case '4':
a[i]=4;
break;
case '5':
a[i]=5;
break;
case '6':
a[i]=6;
break;
case '7':
a[i]=7;
break;
case '8':
a[i]=8;
break;
case '9':
a[i]=9;
break;
case 'a':
case 'A':
a[i]=10;
break;
case 'b':
case 'B':
a[i]=11;
break;
case 'c':
case 'C':
a[i]=12;
break;
case 'd':
case 'D':
a[i]=13;
break;
case 'e':
case 'E':
a[i]=14;
break;
case 'f':
case 'F':
a[i]=15;
break;
}
}
i--;
for(;i>=0;i--)
{
h=h+a[i]*m;
m=m*16;
}
printf("%ld ",h);
}
}