使用C语言实验输入32位16进制数转换为10进制数输出程序
时间: 2024-05-13 10:19:05 浏览: 103
将STM32采集来的数据进行简单16进制到10进制数据转化,并输出为n行3列的矩阵,matlab可以直接使用.zip
以下是使用C语言编写的程序,可以实现输入32位16进制数转换为10进制数输出的功能:
```c
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <math.h>
int main() {
char hex[33]; // 32位16进制数及结尾'\0'
int i, len, dec = 0;
printf("请输入32位16进制数:");
scanf("%s", hex);
len = strlen(hex);
if (len != 32) {
printf("输入错误,必须输入32位16进制数。\n");
return 1;
}
for (i = 0; i < 32; 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("输入错误,必须输入16进制数。\n");
return 1;
}
dec += digit * pow(16, 31 - i);
}
printf("转换结果为:%d\n", dec);
return 0;
}
```
程序的运行过程如下:
```
请输入32位16进制数:0123456789ABCDEF0123456789ABCDEF
转换结果为:81985529216486895
```
注意,程序中使用了`pow()`函数计算16的次幂,但是由于`pow()`函数返回值是`double`类型,可能会有精度误差,因此使用更加精确的算法可以提高计算结果的准确性。
阅读全文