gpt4 book ai didi

c++ - 如何复制文件的二进制数据

转载 作者:行者123 更新时间:2023-11-30 18:24:41 26 4
gpt4 key购买 nike

基本上,我试图使用 fread() 读取文件的二进制数据并使用 printf() 将其打印在屏幕上,现在的问题是,当它打印出来时,它实际上没有显示为二进制 1 和 0 但打印符号和我不知道它们是什么的东西。

我就是这样做的:

#include <stdio.h>
#include <windows.h>


int main(){
size_t sizeForB, sizeForT;
char ForBinary[BUFSIZ], ForText[BUFSIZ];

char RFB [] = "C:\\users\\(Unknown)\\Desktop\\hi.mp4" ; // Step 1

FILE *ReadBFrom = fopen(RFB , "rb" );

if(ReadBFrom == NULL){
printf("Following File were Not found: %s", RFB);
return -1;
} else {
printf("Following File were found: %s\n", RFB); // Step 2
while(sizeForB = fread(ForBinary, 1, BUFSIZ, ReadBFrom)){ // Step 1
printf("%s", ForBinary);
}
fclose(ReadBFrom);

}

return 0;
}

如果有人可以帮助我将文件的实际二进制数据读取为二进制 (0,1),我将非常感激。

最佳答案

 while(sizeForB = fread(ForBinary, 1, BUFSIZ, ReadBFrom)){             
printf("%s", ForBinary); }

这在很多层面上都是错误的。首先,您说它是二进制文件 - 这意味着它首先可能没有文本,并且您正在使用 %s 格式说明符,该格式说明符用于打印以 null 结尾的字符串。同样,由于这是二进制文件,并且其中可能首先没有文本,因此 %s 是使用错误的格式说明符。即使此文件中有文本,您也不确定 fread 是否会读取一个“完整”的以 null 结尾的字符串,您可以使用格式说明符 将其传递给 printf >%s

您可能想要做的是,从文件中读取每个字节,将其转换为二进制表示形式(谷歌如何将整数转换为二进制字符串,例如 here ),然后打印每个字节的二进制表示形式.

基本上是伪代码:

foreach (byte b in FileContents)
{
string s = convertToBinary(b);
println(s);
}

关于c++ - 如何复制文件的二进制数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37492739/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com