В принципе, я пытаюсь читать двоичные данные файла с помощью 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).
Открытие файла в «двоичном режиме» означает, что при чтении из него вы получите необработанные данные без специальной обработки. Если вы выведете его, он будет выводиться как есть, что будет выглядеть как мусор. Если вы хотите, чтобы он выводился как 0 и 1, вам нужно написать код для этого. – kfsone
@Wajid Вы правильно читаете это как бинарный файл. Проблема в том, что в C/C++ нет двоичного примитивного типа данных, поэтому он обычно хранится как символы (8 бит на символ). Вы говорите, что среда выполнения должна печатать эти двоичные данные, как если бы это была строка, поэтому вы получаете символы, потому что это просто строковое представление двоичных данных, которые вы печатаете. См. Это: [Преобразование двоичных файлов в строку] (/ questions/2343099/convert-binary-format-string-to-int-in-c) – Tibrogargan
Если вы хотите, чтобы работа была выполнена правильно, вы должны сделать это самостоятельно. 'printf' не имеет спецификатора преобразования, который выводится в двоичном формате.Таким образом, вам нужно написать вложенный цикл, в котором внешний цикл получает символ из буфера, а внутренний цикл преобразует символ и выводит его как двоичный. – user3386109