C语言十六进制转十进制代码
时间: 2024-11-20 17:55:42 浏览: 14
C语言实现十六进制数据转十进制数据
在C语言中,将十六进制数转换为十进制可以使用标准库函数`strtol()`或者手动逐位计算。以下是两种方法的示例:
**使用`strtol()`函数(适用于字符串形式的十六进制):**
```c
#include <stdio.h>
#include <stdlib.h>
long int hex_to_decimal(char hex_string[]) {
long int decimal;
char *endptr;
if (sscanf(hex_string, "%lx", &decimal) == 1 && endptr == hex_string + strlen(hex_string)) {
return decimal;
} else {
printf("Invalid hexadecimal number.\n");
return -1; // 表示输入无效
}
}
int main() {
char hex[] = "FF"; // 十六进制数
long int dec = hex_to_decimal(hex);
if (dec != -1)
printf("Decimal value: %ld\n", dec);
return 0;
}
```
**手动逐位计算(适用于数组形式的十六进制数字):**
```c
#include <stdio.h>
#include <math.h>
int hex_to_decimal(int hex_array[], int length) {
int decimal = 0;
for (int i = 0; i < length; i++) {
decimal *= 16;
decimal += hex_array[i];
}
return decimal;
}
int main() {
int hex[] = {0xFF}; // 十六进制数组,如二进制表示就是11111111
int length = sizeof(hex) / sizeof(hex[0]);
int dec = hex_to_decimal(hex, length);
printf("Decimal value: %d\n", dec);
return 0;
}
```
阅读全文