Description
二进制是计算机中数据的一种表示方法,只有两个符号0和1,分别代表十进制数值0和1。
十六进制是计算机中数据的一种表示方法,与十进制的对应关系是:十六进制的0~9对应十进制数值0-9,A~F对应十进制数值10-15。
现在你编写一个程序,完成一个十六进制数到二进制表示的转换。
Input
输入有多行,至EOF结束。每行一个十六进制整数n,n不超过100位十六进制数值。n只包括数字0~9和大写字母A~F。
Output
输出有多行,每一行输出与输入相对应,是n的二进制。
Sample Input
0123456789 ABCDEF
Sample Output
0000000100100011010001010110011110001001 101010111100110111101111
HINT
每1位十六进制值对应4位二进制值。
Append Code
#include <stdio.h>
#include <string.h>
#define MAX_STR_LEN 109
int f(int *b,unsigned long long x)
{
int m=0;
while(1)
{
if(x/2==0)
{
b[m]=x%2;
++m;
break;
}
else
{
b[m]=x%2;
x=x/2;
++m;
}
}
return m;
}
int main()
{
char a[300];
int b[1009];
while(gets(a)!=NULL)
{
int l=strlen(a);
int ii;
for(ii=0;ii<l;++ii)
{
if(a[ii]=='0') printf("0000");
if(a[ii]=='1') printf("0001");
if(a[ii]=='2') printf("0010");
if(a[ii]=='3') printf("0011");
if(a[ii]=='4') printf("0100");
if(a[ii]=='5') printf("0101");
if(a[ii]=='6') printf("0110");
if(a[ii]=='7') printf("0111");
if(a[ii]=='8') printf("1000");
if(a[ii]=='9') printf("1001");
if(a[ii]=='A') printf("1010");
if(a[ii]=='B') printf("1011");
if(a[ii]=='C') printf("1100");
if(a[ii]=='D') printf("1101");
if(a[ii]=='E') printf("1110");
if(a[ii]=='F') printf("1111");
}
puts("");
}
}