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

标签 c++ c binary

基本上,我试图使用 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/

相关文章:

c++ - 枚举二进制序列

c - 需要有关树打印代码的帮助

c - 仅回叫w'r't编程,为什么要使用?

CSS 变量意外导致 0

c++ - 在 C++ 中将二进制 Char 数组转换为整数和 double 组

c++ - 是否可以定义一个只能设置一次的变量?

c++ - C/C++ 指针技巧(保存指向 int 的指针,并翻译回来)

Python 固定长度数据包

php - PHP 和 C++ 可以相互传递数据吗?

c - 判断一个数是否是整数?