问题描述:
(1)做一个类似BinaryViewer的查看二进制文件的程序,输入文件名后,可以以16进制和ASCII对照的方式列出该文件的内容,可以参考下图:
提示:循环中,一次读入16个字节,先用16进制形式输出,再用字符形式输出。
代码实现:
#include <iostream>
#include <cstring>
#include <cstdio>
#include <cstdlib>
#include <fstream>
#include <iomanip>
using namespace std;
int main(){
printf("请输入文件名:");
char t[20];
string s;
cin>>t;
ifstream myfile(t,ios::in|ios::binary);
if(!myfile){
cerr<<"open error!\n";
exit(1);
}
/*while(!myfile.eof()){
getline(myfile,s);
cout<<s<<'\12';
}*/
while(!myfile.eof()){
getline(myfile,s);
if(!myfile.eof()){
for(int i=0; s[i]!='\0'; ++i)
cout<<setfill('0')<<setw(2)<<hex<<int((unsigned char)(s[i]))<<" ";
cout<<'\t';
for(int i=0; s[i]!='\0';++i)
cout<<(s[i]?s[i]:'.');
cout<<endl;
}
}
myfile.close();
return 0;
}
运行结果:
原文地址:http://blog.csdn.net/zp___waj/article/details/46529537