代码
#include <stdio.h>
#include <string.h>
#include <ctype.h>
// 十六进制转十进制的函数
int hexToDec(const char* hex) {
int len = strlen(hex);
int decimal = 0;
int base = 1;
// 从十六进制字符串的最后一位开始处理
for (int i = len - 1; i >= 0; i--) {
char digit = hex[i];
int value;
// 如果是数字字符(0 - 9)
if (isdigit(digit)) {
value = digit - '0';
}
// 如果是大写字母字符(A - F)
else if (isupper(digit)) {
value = digit - 'A' + 10;
}
// 如果是小写字母字符(a - f)
else if (islower(digit)) {
value = digit - 'a' + 10;
}
else {
// 遇到非十六进制字符,返回错误值
return -1;
}
// 累加当前位的值
decimal += value * base;
// 更新基数
base *= 16;
}
return decimal;
}
int main() {
const char* hex = "19";
int decimal = hexToDec(hex);
if (decimal == -1)
{
printf("输入的不是有效的十六进制字符串。\n");
}
else {
printf("十六进制 %s 转换为十进制是 %d。\n", hex, decimal);
}
return 0;
}
实现效果:
