C语言实现十六进制转十进制:代码详解与示例
#include <stdio.h>
#include <string.h>
int hexToDec(char hexChar) {
if (hexChar >= '0' && hexChar <= '9') {
return hexChar - '0';
}
else if (hexChar >= 'A' && hexChar <= 'F') {
return hexChar - 'A' + 10;
}
else if (hexChar >= 'a' && hexChar <= 'f') {
return hexChar - 'a' + 10;
}
else {
return -1;
}
}
int main() {
char str[80];
char newStr[80];
int dec = 0;
int index = 0;
printf("Enter a string:");
scanf("%s", str);
printf("New string:");
int len = strlen(str);
for (int i = 0; i < len; i++) {
int decValue = hexToDec(str[i]);
if (decValue >= 0) {
newStr[index] = str[i];
printf('%c', newStr[index]);
index++;
dec = dec * 16 + decValue;
}
}
printf("\nnumber=%d\n", dec);
return 0;
}
代码解析:
-
hexToDec(char hexChar)函数:- 该函数用于将单个十六进制字符转换为十进制数。
- 根据字符的值,分别处理 '0'-'9'、'A'-'F' 和 'a'-'f'。
- 非十六进制字符返回 -1。
-
main()函数:- 声明两个字符数组
str和newStr用于存储输入字符串和过滤后的十六进制字符串。 - 声明
dec变量用于存储十进制结果。 - 声明
index变量用于跟踪newStr数组的索引。 - 使用
scanf()函数获取用户输入的字符串。 - 循环遍历输入字符串,使用
hexToDec()函数判断字符是否为十六进制字符。 - 如果是,则将字符添加到
newStr数组并打印。 - 同时,使用
dec = dec * 16 + decValue累加计算十进制值。 - 最后,输出过滤后的十六进制字符串和计算得到的十进制值。
- 声明两个字符数组
示例:
输入:
#$Fe$3h*
输出:
New string:Fe3
number=4067
总结:
该代码实现了一个简单的十六进制转十进制的程序。它首先过滤掉输入字符串中非十六进制的字符,然后将剩下的十六进制字符串转换为十进制数。代码易于理解和修改,可以作为学习 C 语言字符串处理和进制转换的参考。
原文地址: https://www.cveoy.top/t/topic/pknB 著作权归作者所有。请勿转载和采集!