Различает размер файлов между записью в Python и записью в C - PullRequest
0 голосов
/ 18 февраля 2020

Мне интересно, почему при записи файла в C его размер составляет 131696B, а при записи файла в Python делится на 2 (65848B)? И так, как получить такой же размер в C.

int str2bin(char *str) {

char *ptr = str;
int i;
char str1[] = "1";
char str0[] = "0";
FILE *fp = fopen("output_file.txt", "a");

for(; *ptr != 0; ++ptr)
{

    /* perform bitwise AND for every bit of the character */
    for(i = 7; i >= 0; --i) {
        if (*ptr & 1 << i){
             fwrite(str1, 1, sizeof(str1), fp);
         } else{
             fwrite(str0, 1, sizeof(str0), fp);
         }
    }
}

fclose(fp);
return 0;

И код для открытия файла, который я хочу преобразовать в двоичный файл:

FILE *fp = fopen(argv[1], "r");
fseek(fp, 0, SEEK_END);
long fsize = ftell(fp);
fseek(fp, 0, SEEK_SET); 
char *buffer = malloc(fsize + 1);

fread(buffer, 1, fsize, fp);

fclose(fp);
// printf("%s\n", buffer);
str2bin(buffer);

Спасибо

1 Ответ

0 голосов
/ 18 февраля 2020
 for(i = 7; i >= 0; --i) {

выполнив --i вместо i-- вы пишете только [0-6] байта.

Вы также не пишете в двоичном виде, вы пишете в символах 0 и 1, вы бы хотели, чтобы

char str1[] = "1";
char str0[] = "0";

было

 char str1 = 1;
 char str0 = 0;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...