将任何文件作为二进制文件打开

时间:2016-06-20 10:20:20

标签: file c++11 format binaryfiles

我想知道如何打开任何文件(jpg,txt,zip,cpp,...)作为二进制文件。我希望在通常会解释该文件格式的程序格式化之前看到字节。 这是可能的?我怎么能用c ++做呢? 感谢。

2 个答案:

答案 0 :(得分:1)

您可以使用POSIX(C方式但在C ++中工作)函数来执行此操作:

#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <unistd.h>

int fd = open("file.bin", O_RDONLY); //Opens the file
if(fd<0){
    perror("Error opening the file");
    exit(1);
}
char buf[1024];
int i;
ssize_t rd;
for(;;){
   rd = read(fd, buf, 1024);
   if(rd==-1) //Handle error as we did for open
   if(rd==0) break;
   for(i = 0; i < rd; i++)
     printf("%x ", buf[i]); //This will print the hex value of the byte
   printf("\n");
}
close(fd);

答案 1 :(得分:0)

您可以使用旧的C接口(fopen()等),但C ++方式基于文件流:fstreamifstreamofstream,{{ 1}}等等。

要以二进制模式(而非文本模式)打开,您必须使用标记wfstream

例如,您可以通过以下方式读取文件(一次一个字符)

std::ios::binary

p.s:抱歉我的英语不好