使用这个算法。10进制=16进制第一行×16的0次方+16进制的第二行×16的一次方+16进制的第三行×16的二次方......
时间: 2024-04-23 13:28:27 浏览: 123
如果您想使用类似于 "10进制=16进制第一位×16的0次方+16进制第二位×16的一次方+16进制第三位×16的二次方..." 的算法来将一个16进制数转换为10进制数,可以使用以下代码实现:
```c
#include <stdio.h>
#include <string.h>
#include <math.h>
int hexToDec(char hex[]) {
int dec = 0;
int length = strlen(hex);
for (int i = 0; i < length; i++) {
int digit;
if (hex[i] >= '0' && hex[i] <= '9') {
digit = hex[i] - '0';
}
else if (hex[i] >= 'A' && hex[i] <= 'F') {
digit = hex[i] - 'A' + 10;
}
else if (hex[i] >= 'a' && hex[i] <= 'f') {
digit = hex[i] - 'a' + 10;
}
else {
printf("无效的十六进制数\n");
return 0;
}
dec += digit * pow(16, length - i - 1);
}
return dec;
}
int main() {
char hex[100];
printf("请输入一个十六进制数: ");
scanf("%s", hex);
int dec = hexToDec(hex);
printf("十六进制数: %s\n", hex);
printf("十进制数: %d\n", dec);
return 0;
}
```
这段代码会根据您输入的十六进制数,使用指数递增的方式将其转换为十进制数。请注意,这里使用了`pow()`函数来进行指数计算,需要包含`math.h`头文件。
希望这次能满足您的需求!如果有任何问题,请随时提问。
阅读全文