十六进制字符串转十进制数字 - C语言实现
十六进制字符串转十进制数字 - C语言实现
本程序使用C语言实现十六进制字符串到十进制数字的转换。输入一个字符串,程序将过滤掉非十六进制字符,并将剩余的十六进制字符转换成十进制数字输出。
代码示例
#include <stdio.h>
#include <string.h>
int hexToDecimal(char hex[]) {
int decimal = 0;
int length = strlen(hex);
int base = 1;
for (int i = length - 1; i >= 0; i--) {
if (hex[i] >= '0' && hex[i] <= '9') {
decimal += (hex[i] - '0') * base;
}
else if (hex[i] >= 'A' && hex[i] <= 'F') {
decimal += (hex[i] - 'A' + 10) * base;
}
base *= 16;
}
return decimal;
}
int main() {
char string[80];
printf("Enter a string: ");
fgets(string, sizeof(string), stdin);
// 去除字符串末尾的换行符
string[strcspn(string, "\n")] = '\0';
char newString[80];
int j = 0;
for (int i = 0; string[i] != '\0'; i++) {
if ((string[i] >= '0' && string[i] <= '9') || (string[i] >= 'A' && string[i] <= 'F')) {
newString[j] = string[i];
j++;
}
}
newString[j] = '\0';
printf("New string: %s\n", newString);
printf("Decimal value: %d\n", hexToDecimal(newString));
return 0;
}
代码解释
-
hexToDecimal函数:- 该函数接收一个十六进制字符串作为参数。
- 使用循环遍历字符串,将每个字符转换为十进制数并累加到
decimal变量中。 base变量用来记录当前字符的权重,初始值为 1,每循环一次乘以 16。- 最后返回
decimal变量的值,即十进制数字。
-
main函数:- 从控制台输入一个字符串。
- 调用
strcspn函数去除字符串末尾的换行符。 - 使用循环过滤掉非十六进制字符,并将剩余的十六进制字符存储到
newString数组中。 - 调用
hexToDecimal函数将newString数组转换为十进制数字。 - 将
newString和十进制数字输出到控制台。
总结
本程序使用 C 语言实现了十六进制字符串到十进制数字的转换。通过过滤掉非十六进制字符,并将剩余字符转换为十进制数字,最终得到正确的十进制结果。此程序可用于各种需要进行十六进制和十进制数字转换的应用场景。
原文地址: https://www.cveoy.top/t/topic/bfNl 著作权归作者所有。请勿转载和采集!