C语言有没有内置函数可以直接转换十六进制到十进制?
时间: 2024-12-19 08:14:57 浏览: 9
C标准库并没有直接提供一个函数用于十六进制到十进制的转换。但是,可以使用`strtoul()`或`strtol()`函数结合一些额外处理,来实现这一功能。这两个函数可以处理基础的字符串转换,包括整型数值,而你需要自己处理十六进制前缀(如"0x"或"0X")以及大小写转换。
例如:
```c
#include <stdio.h>
#include <stdlib.h>
#include <ctype.h>
unsigned long long hex_to_decimal(const char* hex_string) {
unsigned long long value = 0;
bool is_hex = false;
for (char c : hex_string) {
if (isxdigit(c)) {
int digit = toupper((int)c) - '0';
if (digit > 9) {
digit -= 10; // 处理大写的A-F
}
value *= 16;
value += digit;
is_hex = true;
} else if (!is_hex && c == 'X' || c == 'x') { // 检查前缀
is_hex = true;
} else {
break; // 非法字符,停止转换
}
}
return value;
}
int main() {
const char* hex = "0xFF";
printf("Hexadecimal %s is equal to decimal %llu.\n", hex, hex_to_decimal(hex));
return 0;
}
```
阅读全文