从磁盘读取二进制文件并打印成汉字
2010-12-09 08:04
176 查看
#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;
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;
while(k<sum)
{
infile.read(&mode[k],sizeof(char));
infile.read(&mode[k+1],sizeof(char));
fuzhi1(p1,mode[k]);
fuzhi2(p1,mode[k+1]);
p1++;
if(k%32==30)
{
dayin();
p1=0;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
p[i][j]=0;
}
}
if(k==62)
{
break;
}
//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
#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;
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;
while(k<sum)
{
infile.read(&mode[k],sizeof(char));
infile.read(&mode[k+1],sizeof(char));
fuzhi1(p1,mode[k]);
fuzhi2(p1,mode[k+1]);
p1++;
if(k%32==30)
{
dayin();
p1=0;
for(i=0;i<20;i++)
{
for(j=0;j<20;j++)
{
p[i][j]=0;
}
}
if(k==62)
{
break;
}
//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
相关文章推荐
- 300.13从磁盘读取一个文件到内存中,再打印到控制台
- 从磁盘中读取一串字符串并打印成汉字
- Java IO 之 FileReader 读取文件打印在控制台(处理汉字乱码bug)
- Snort里如何将一个tcpdump格式的二进制文件读取打印到屏幕上(图文详解)
- (转载) Java IO 之 FileReader 读取文件打印在控制台(处理汉字乱码bug)
- 从磁盘读取一个文件到内存中,再打印到控制台
- 从数据库中读取二进制文件,并将图片打印到页面上
- 存储过程读取文件为二进制 然后用cs代码打印出来
- FileSystem.DeleteDirectory遇到"无法删除 文件:无法读取源文件或磁盘"
- 使用FileInputStream类, 实现从磁盘读取本应用程序源代码文件,并将文件内容显示在屏幕上。
- 使用fread读取二进制文件时,一定打开的时候使用‘rb’,不要只写r
- C# 向数据中存储和读取二进制文件!!
- 我得意地笑: 搞定了, 哈哈 如何读取Thermo Scientific Nicolet Omnic *.spa二进制格式的谱图文件中的数据
- windows下,c /c++实现磁盘扫描,结合配置文件,读取特定后缀文件目录代码
- 磁盘IO瓶颈 之:单节点下的文件数量导致文件读取性能低下
- .Net下二进制形式的文件(图片)的存储与读取
- .Net下二进制形式的文件存储与读取
- java读取txt目标文件中的数据打印到控制台
- 读取日志文件,搜索关键字,打印关键字前5行。yield、deque实例
- 利用Java读取二进制文件实例详解