问题及代码:
/*
* Copyright (c) 2015, 烟台大学计算机学院
* All rights reserved.
* 文件名称:二进制文件浏览器 .cpp
* 作 者:刘佳琦
* 完成日期:2015年6月13日
* 版 本 号:v1.0
*
* 问题描述: 做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容
* 输入描述:文件名
* 程序输出:以16进制和ASCII对照的方式列出该文件的内容
*/
#include<iostream>
#include<iomanip>
#include <fstream>
#include<cstdlib>
using namespace std;
int main( )
{
char c[16];
char f[100];
cout<<"请输入文件名:";
cin>>f;
ifstream infile(f,ios::in|ios::binary);
if(!infile)
{
cerr<<"open error!";
exit(1);
}
while(!infile.eof())
{
infile.read(c,16);
if(!infile.eof())
{
for(int i=0; i<16; ++i)
cout<<setfill('0')<<setw(2)<<hex<<int((unsigned char)(c[i]))<<" ";
cout<<endl;
for(int i=0; i<16; ++i)
{
if(c[i]!='\0')
cout<<c[i];
else
cout<<'.';
}
cout<<endl;
}
}
return 0;
}
运行结果:
学习心得:
输入文件名,从而打开文件,上次就不会,这次总算会了。但主要是把文件中的信息转化成16进制和ASCII对照,用hex,设置整数的基数为16,