C语言写一个函数,输入一个十六进制数,输出相对应的十进制的数
时间: 2024-02-15 14:04:45 浏览: 86
下面是一个 C 语言函数,可以实现输入一个十六进制数,输出相对应的十进制数:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int hex_to_dec(char *hex) {
int i, len;
int dec = 0;
int base = 1;
len = strlen(hex);
for (i = len - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
dec += (hex[i] - '0') * base;
} else if (hex[i] >= 'a' && hex[i] <= 'f') {
dec += (hex[i] - 'a' + 10) * base;
} else if (hex[i] >= 'A' && hex[i] <= 'F') {
dec += (hex[i] - 'A' + 10) * base;
} else {
printf("Invalid input: %c\n", hex[i]);
return -1;
}
base *= 16;
}
return dec;
}
```
该函数的参数为一个指向十六进制数字符串的指针,返回值为对应的十进制数。在函数内部,首先计算出字符串的长度,然后逐个处理字符串中的字符,根据十六进制数的规则将其转换为对应的十进制数。如果输入的字符串中包含非法字符,则返回 -1 表示出错。
阅读全文