有一个测试文件,内容如下:
EF BB BF EF BB BF 61 62 63 0D 0A E4 B8 AD E6 96 87 0D 0A
用UltraEdit程序打开,二进制显示时,只显示了一个UTF8-BOM,即首部只有一个 EF BB BF;而用Binary Viewer则显示2个,上图就是程序显示的截图(不能贴图片,改为文本)。
结论是:用UE来查看文件二进制内容,显示不完全正确。
以下是为了验证这个结论自制的两个小程序,功能刚好够用,可能有边界条件或安全问题没考虑到。
/*
查看文件:十六进制
*/
#include <iostream>
#include <cstdio> //printf
#include <string>
#include <fstream>
using namespace std;
int main(int argc, char** argv)
{
if(argc > 1){
ifstream file;
file.open(argv[1],ios_base::binary);
if(file.is_open()){
int n = 0;
unsigned char b;
while(true){
if(!file.read((char*)&b,1))
break;
if(n != 0)
printf(" ");
printf("%02X",b);
n++;
}
}
}
return 0;
}
* * * * * * * * * * * * * * *&nbs