代码
#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;
}
实现效果:
