c 十六进制转为二进制编程
时间: 2023-12-06 16:45:37 浏览: 29
可以使用以下代码将十六进制数转换为二进制数:
```c
#include <stdio.h>
int main() {
char hex[17];
long long bin, place;
int i = 0, rem, val;
// 读入十六进制数
printf("输入一个十六进制数:");
scanf("%s", hex);
// 将十六进制数转换为二进制数
bin = 0ll;
place = 0ll;
for (i = 0; hex[i] != '\0'; i++) {
bin = bin * place;
switch (hex[i]) {
case '0':
bin += 0;
break;
case '1':
bin += 1;
break;
case '2':
bin += 10;
break;
case '3':
bin += 11;
break;
case '4':
bin += 100;
break;
case '5':
bin += 101;
break;
case '6':
bin += 110;
break;
case '7':
bin += 111;
break;
case '8':
bin += 1000;
break;
case '9':
bin += 1001;
break;
case 'a':
case 'A':
bin += 1010;
break;
case 'b':
case 'B':
bin += 1011;
break;
case 'c':
case 'C':
bin += 1100;
break;
case 'd':
case 'D':
bin += 1101;
break;
case 'e':
case 'E':
bin += 1110;
break;
case 'f':
case 'F':
bin += 1111;
break;
default:
printf("输入的十六进制数不合法!\n");
return 0;
}
place = 10000;
}
// 输出二进制数
printf("二进制数为:%lld\n", bin);
return 0;
}
```
此代码利用了一个 long long 类型的变量 bin 来存储二进制数。对于每个十六进制位,我们将其转换为一个四位的二进制数,并将其附加到 bin 的末尾。在转换过程中,我们还使用了一个 place 变量来确定当前位的权重。