我想创建一个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);
}
但我想打印它的二进制形式。 所以,请帮忙。
答案 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运算。每次输出操作会告诉您是否设置了该特定位。您可以将它用于进一步处理。