首先,我们要知道四位二进制数相当于一位十六进制数,然后10~15用A~F来表示。
话不多说,上代码
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <string.h>
int main()
{
int N = 0;
printf("将进行几次转换:\n");
scanf("%d", &N);
char a[32] = { 0 };
int b[32] = { 0 };
while (N--)
{
printf("请输入二进制数:\n");
scanf("%s", a);
int mount = 0, t = 1, k = 0, i = 0;
int len = strlen(a);
for (i = 0; i < len; i++)
b[i] = 0;
for (i = len-1; i >=0; i--)
{
b[k] += (a[i] - '0') * t;
t *= 2;
mount++;
if (mount % 4 == 0)
{
t = 1;
k++;
}
}
for (i = 0; i <= k; i++)
{
if (b[i] >= 10)
{
switch (b[i])
{
case 10:b[i] = 'A'; break;
case 11:b[i] = 'B'; break;
case 12:b[i] = 'C'; break;
case 13:b[i] = 'D'; break;
case 14:b[i] = 'E'; break;
case 15:b[i] = 'F'; break;
}
}
}
for (i = k; i >= 0; i--)
{
if(b[i]!=0)
{
for (int j = i; j >= 0; j--)
{
if (b[j] >= 65 && b[j] <= 70)
printf("%c", b[j]);
else
printf("%d", b[j]);
}
break;
}
}
if (i == -1)
printf("0");
printf("\n");
}
return 0;
}
祝:“码”思泉涌,下“指”如有神?