用C语言实现十六进制无符号整形数据类型转换为十进制
时间: 2023-11-16 12:07:17 浏览: 78
C语言实现十六进制数据转十进制数据
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
// 将十六进制字符转换为十进制数值
int hexCharToInt(char c) {
if (c >= '0' && c <= '9') {
return c - '0';
} else if (c >= 'a' && c <= 'f') {
return c - 'a' + 10;
} else if (c >= 'A' && c <= 'F') {
return c - 'A' + 10;
} else {
return -1; // 非法字符
}
}
// 将十六进制字符串转换为十进制数值
unsigned int hexStrToUInt(char *hexStr) {
int len = strlen(hexStr);
unsigned int decimal = 0;
for (int i = 0; i < len; i++) {
int digit = hexCharToInt(hexStr[i]);
if (digit == -1) { // 非法字符
printf("Invalid hex string!\n");
exit(1);
}
decimal += digit * pow(16, len - 1 - i);
}
return decimal;
}
int main() {
char hexStr[9]; // 最大8位十六进制数
printf("Enter a hex string (up to 8 characters): ");
scanf("%s", hexStr);
unsigned int decimal = hexStrToUInt(hexStr);
printf("Decimal value: %u\n", decimal);
return 0;
}
阅读全文