十六进制转十进制(c语言)

 输入的十六进制数,通过字符型存放在a[]数组中。首先将字符型转为int型(将a转为10等等)存放在b[]数组中。在与10^n相乘在相加得出结果。

#include<stdio.h>
#include<math.h>
//16进制转10进制
int main(void)
{
	char a[20]; //输入16进制数
	int b[20] = { 0 }; //将输入的16进制转为int型
	int i = 0, j = 0;
	int sum = 0;
	int c = 0;//最终10进制数

	gets(a);
	//printf("%s\n", a); //输出初始

	//将其从char型强转为int型 存入 b[]中
	while (a[sum] != '\0'){ 
	if ((a[sum] >= 'a') && (a[sum] <= 'z'))
		{
			b[sum] = a[sum] - 'a' + 10;
			sum++;
			continue;
		}
		if ((a[sum] >= 'A') && (a[sum] <= 'Z'))
		{
			b[sum] = a[sum] - 'A' + 10;
			sum++;
			continue;
		}
		b[sum] = a[sum] - '0';
		sum++;
	}

	
	//将每转为16进制
	for (i = 0; i < sum; i++)
	{
		b[sum - i - 1] = b[sum - i - 1] * pow(16, i);
	}
	

	//累加得出结果
	for (j = 0; j < sum; j++)
	{
		c = c + b[j];
	}
	printf("%d", c);

	return 0;
}

猜你喜欢

转载自blog.csdn.net/l455702707/article/details/86669573