#include<iostream>
#include<string>
#include<fstream>
#include<math.h>
int ta[4];
int p[100][100];
void jinzhi(char c);
void fuzhi1(int i,char a);
void fuzhi2(int i,char b);
void dayin();
using namespace std;
void main()
{
int p1,k,i,j,m;
for(i=0;i<100;i++)
{
for(j=0;j<100;j++)
{
p[i][j]=0;
}
}
char mode[1000];
long sum=0;
FILE *fp=fopen("E://学习下载的资料//二进制数据//333.dat","r");
while(fgetc(fp)!=EOF)
{
sum++;
}
fclose(fp);
//cout<<sum<<endl;
ifstream infile("E://学习下载的资料//二进制数据//333.dat",ios_base::in|ios_base::binary);
if(!infile){cout<<"open error!/n";}
k=0;p1=0;m=0;
while(k<sum)
{
infile.read(&mode[k],sizeof(char));
//判断读出的字符是空格时,考虑k+1,即往下读一位继续;
if(mode[k]==' ')
{
k++;
m++;//空格的个数
cout<<endl;
continue;
}
infile.read(&mode[k+1],sizeof(char));
fuzhi1(p1,mode[k]);
fuzhi2(p1,mode[k+1]);
p1++;
if((k-m)%32==30)//判断是否已到16列
{
dayin();
p1=0;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
p[i][j]=0;
}
}
/* if(k==62)
{
break;
}
*/
}
k=k+2;
}
}
//16进制转换为2进制
void jinzhi(char c)
{
int i=3;
// ta[] ={0,0,0,0};
ta[0]=ta[1]=ta[2]=ta[3]=0;
if(c>='0'&&c<='9')
{
int c1=c-48;
while(c1)
{
ta[i--]=c1%2;
c1/=2;
}
}
else
{
int c1=c-55;
//cout<<c1<<endl;
while(c1)
{
ta[i--]=c1%2;
c1/=2;
}
}
}
//给数组赋值
void fuzhi1(int i,char a1)
{
char b1=a1;
jinzhi(b1);
for(int j=0;j<=3;j++)
{
p[7-j][i]=ta[j];
}
}
void fuzhi2(int i,char b2)
{
char a2=b2;
jinzhi(a2);
for(int j=0;j<=3;j++)
{
p[3-j][i]=ta[j];
}
}
//打印出字型
void dayin()
{
int i,j;
for(i=0;i<8;i++)
{
for(j=0;j<16;j++)
{
cout<<p[i][j]<<' ';
}
cout<<endl;
}
}
//中的二进制编码 0000F010101010FF10101010F000000000000F08080808FF080808080F000000