c++ - 以二进制形式打印文件

标签 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);
}

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

最佳答案

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

  putchar(ch);

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

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

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

关于c++ - 以二进制形式打印文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19020120/

相关文章:

c++ - C++ 中以 Listclass-parent 作为成员的 Itemclass

c++ - 如何将二维数组的行(和列)相加

c - 奇怪的C编码风格

c - 如何在网络程序中监视/关闭待处理的网络 session

c++ - 将 COM 接口(interface)指针传递给函数

c++ - OpenGL - 使用两个 GL 程序改变顶点的位置

c - 我的程序哪里出错了? (按年龄排序)

java - 为什么在该路径中创建该文件?

c++ - 如何在 C++ 中使用 ifstream 打开和读取文件?

c++ - 如何将文件写入当前目录而不是 bazel-out