-5

我想让 ac/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

4 回答 4

1

我假设“二进制”是指您希望将内容视为数字数据,而不是 ASCII 文本。改变

  putchar(ch);

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

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

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

于 2013-09-26T06:12:36.537 回答
0

在您的while循环中,您一次读取每个字符(即字节),您可以对ch从00000001到10000000的所有字符进行字符与运算。每次操作的输出都会让您知道该特定位是否设置与否。您可以将其用于进一步处理。

于 2013-09-26T05:52:39.860 回答
0

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

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

于 2013-09-26T05:40:04.650 回答
0

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

fstream fs;
fs.open("filename.txt",ios::binary);
于 2013-09-26T05:40:21.900 回答