十六进制转化为十进制代码C语言
时间: 2024-11-16 16:19:56 浏览: 40
在C语言中,将十六进制数转换成十进制数可以使用`strtol()`函数或者手动计算每个十六进制位对应的十进制值。这里是一个使用`strtol()`函数的例子:
```c
#include <stdio.h>
#include <string.h>
int main() {
char hex_string[] = "FF"; // 要转换的十六进制字符串
long decimal_value;
// 将十六进制字符串转换为十进制
if (sscanf(hex_string, "%lx", &decimal_value) == 1) { // %lx用于读取十六进制整数
printf("Hexadecimal value %s is equal to decimal %ld.\n", hex_string, decimal_value);
} else {
printf("Invalid hexadecimal string.\n");
}
return 0;
}
```
在这个示例中,`sscanf()`函数尝试解析输入的十六进制字符串,并将其存储到`decimal_value`中。如果转换成功,`sscanf()`会返回1。
如果你想手动计算,可以遍历每一位并根据十六进制的基数(16)进行转换:
```c
#include <stdio.h>
#include <stdlib.h>
char hex_string[] = "FF";
long hex_to_decimal(const char *hex) {
long decimal = 0;
int i = 0;
while (hex[i]) {
int digit = hex[i] - '0'; // 如果字符小于'0', 则加上10,表示A-F的范围
if (digit >= 10) {
digit -= 10;
}
decimal = decimal * 16 + digit;
i++;
}
return decimal;
}
int main() {
long decimal_value = hex_to_decimal(hex_string);
printf("Hexadecimal value %s is equal to decimal %ld.\n", hex_string, decimal_value);
return 0;
}
```
阅读全文