C语言编写一个函数,函数接收一个字符串,是由十六进制数组成的一组字符串,函数功能是把字符串转成十进制数字返回
时间: 2024-12-04 19:24:09 浏览: 13
C语言 不使用strcat函数实现连接两个字符串功能代码
在C语言中,你可以创建一个函数来解析十六进制字符串并将其转换为十进制整数。这里是一个简单的例子,使用`strtol()`函数配合判断每一位是否为十六进制字符:
```c
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
long long hex_to_decimal(const char *hex_str) {
long long decimal = 0;
int i = 0;
while (hex_str[i]) { // 遍历整个字符串
char digit = tolower(hex_str[i]); // 转换为小写字母处理大写输入
if (isdigit(digit)) { // 检查是否是0-9的数字
decimal = 16 * decimal + digit - '0';
} else if (digit >= 'a' && digit <= 'f') { // 检查是否是A-F的十六进制字符
decimal = 16 * decimal + digit - 'a' + 10;
} else if (digit >= 'A' && digit <= 'F') { // 同理处理大写的十六进制字符
decimal = 16 * decimal + digit - 'A' + 10;
} else {
return -1; // 如果遇到非十六进制字符,返回错误标志
}
i++;
}
return decimal;
}
int main() {
const char *hex_string = "FF";
long long result = hex_to_decimal(hex_string);
if (result == -1) {
printf("Invalid hexadecimal string.\n");
} else {
printf("Decimal representation of '%s': %lld\n", hex_string, result);
}
return 0;
}
```
这个函数会检查每个字符是否属于有效的十六进制范围,并将它们转换为相应的十进制值。如果遇到非十六进制字符,它将返回-1作为错误标志。
阅读全文