用c语言实现十六进制转十进制
时间: 2023-08-31 22:06:04 浏览: 103
C语言实现十六进制数据转十进制数据
以下是 C 语言代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main()
{
char hex[20];
int dec = 0, len, base = 1, i;
printf("请输入一个十六进制数: ");
scanf("%s", hex);
len = strlen(hex);
for (i = len - 1; i >= 0; i--)
{
if (hex[i] >= '0' && hex[i] <= '9')
{
dec += (hex[i] - '0') * base;
base *= 16;
}
else if (hex[i] >= 'a' && hex[i] <= 'f')
{
dec += (hex[i] - 'a' + 10) * base;
base *= 16;
}
else if (hex[i] >= 'A' && hex[i] <= 'F')
{
dec += (hex[i] - 'A' + 10) * base;
base *= 16;
}
else
{
printf("输入了非法的十六进制数!\n");
exit(0);
}
}
printf("转换为十进制数为: %d\n", dec);
return 0;
}
```
代码解释:
首先,我们定义了一个字符串 `hex` 来存储输入的十六进制数,一个整型变量 `dec` 来存储转换后的十进制数,一个整型变量 `len` 来存储输入的十六进制数的长度,一个整型变量 `base` 来表示当前位数的权值。
然后,我们通过 `scanf` 函数来获取用户输入的十六进制数,并通过 `strlen` 函数获取其长度。
接着,我们从字符串的最后一位开始遍历,若当前字符是 0-9 或 a-f 或 A-F 中的一个,就将其转换为对应的十进制数,并加上当前位的权值,最后将权值乘以 16(因为是十六进制)。
若输入的十六进制数中包含非法字符,则程序将输出错误信息并退出。
最后,我们输出转换后的十进制数。
阅读全文