Đây là bài chuyển từ Hex sang Dec của thầy em! Em có chỗ chưa hiểu ở dòng tính kết quả. Ai giải thích giúp em với ạ.
#include<stdio.h>
#include<string.h>
#include<math.h>
void xuat(long kq);
void nhap(char S[]);
long doisangthapphan(char S[]);
void main()
{
char S[30];
nhap(S);
long kq=doisangthapphan(S);
xuat(kq);
}
void nhap(char S[])
{
gets(S);
}
void xuat(long kq)
{
printf("%ld",kq);
}
long doisangthapphan(char S[])
{
long kq=0;
int len=strlen(S);
for (int i=0; i<len; i++)
if (S[i]>='0' && S[i]<='9')
kq+= (S[i]-'0') * (long)pow(16,len-1-i);
else
kq+= (S[i]-55) * (long)pow(16,len-1-i);
return kq;
}