以二进制形式打印文件

时间:2013-09-26 05:35:46

标签: c++ c file-io

我想创建一个c / c ++程序来读取文件并将其二进制形式打印为输出。 我能够以普通文本形式打印它。

#include<stdio.h>
#include<stdlib.h>
int main()
{
FILE *fp;
char ch;

if((fp=fopen("C:\\Users\\!diot\\Desktop\\21.txt","rb"))==NULL)
{
    printf("\nCannot open file\n");
}

fseek(fp,0,SEEK_SET);

ch=getc(fp);

while(!feof(fp))
{
    putchar(ch);
    ch=getc(fp);
}


fclose(fp);

return(0);
}

但我想打印它的二进制形式。 所以,请帮忙。

4 个答案:

答案 0 :(得分:1)

我假设“二进制”你的意思是,你希望将内容看作数字数据,而不是ASCII文本。改变

  putchar(ch);

  printf("0x%02X ",ch);
  {
     static int counter=0;
     if ((++counter) % 16 == 0) printf("\n");
  }

这会将文件显示为十六进制数据。

当然,还有其他方法可以做到这一点。如果您使用的是Visual Studio,只需使用.bin扩展名重命名文件,然后直接使用Visual Studio打开它以直接查看十六进制数据。那里也有很多免费软件十六进制编辑器。

答案 1 :(得分:0)

如果您知道哪些类型的记录已进入二进制文件。按记录阅读记录。然后打印每条记录。你必须使用fread()。

请参考他的链接。 http://www.codingunit.com/c-tutorial-binary-file-io

答案 2 :(得分:0)

在C ++中,只需以二进制模式打开文件:

fstream fs;
fs.open("filename.txt",ios::binary);

答案 3 :(得分:0)

在while循环中,您一次读取每个字符(即字节),您可以对00000001到10000000之间的所有字符进行字符ch的AND运算。每次输出操作会告诉您是否设置了该特定位。您可以将它用于进一步处理。