C语言16进制转10进制函数
时间: 2024-08-12 19:10:13 浏览: 48
C语言十进制转二进制代码实例
5星 · 资源好评率100%
在C语言中,没有内置的函数可以直接将16进制字符串转换为10进制整数,但你可以自定义一个函数来实现这个功能。这里我们可以使用`strtol`函数配合循环来逐位转换。以下是一个简单的示例:
```c
#include <stdio.h>
#include <string.h>
long long hex_to_decimal(const char* hex_str) {
int len = strlen(hex_str);
long long decimal = 0;
bool is_negative = hex_str == '-';
if (is_negative) {
hex_str++;
len--;
}
for (int i = 0; i < len; i++) {
if (hex_str[i] >= '0' && hex_str[i] <= '9') {
decimal = decimal * 16 + (hex_str[i] - '0');
} else if (hex_str[i] >= 'A' && hex_str[i] <= 'F') {
decimal = decimal * 16 + (hex_str[i] - 'A' + 10);
} else if (hex_str[i] >= 'a' && hex_str[i] <= 'f') {
decimal = decimal * 16 + (hex_str[i] - 'a' + 10);
} else {
printf("Invalid character in hexadecimal string: %c\n", hex_str[i]);
return -1; // 或者抛出错误
}
}
return is_negative ? -decimal : decimal;
}
int main() {
char hex[] = "FF";
long long decimal_result = hex_to_decimal(hex);
if (decimal_result != -1) {
printf("Hexadecimal (%s) converted to decimal is: %lld\n", hex, decimal_result);
}
return 0;
}
```
在这个示例中,`hex_to_decimal`函数接受一个16进制字符串,通过遍历并逐位转换,将其转换成10进制表示。请注意,这个函数假设输入字符串只包含有效的16进制字符。
阅读全文