用Python编写和用C编写的文件大小不同

2024-09-25 00:36:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我想知道为什么当我用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);

谢谢


Tags: 文件forbufferfileintfpcharstr
1条回答
网友
1楼 · 发布于 2024-09-25 00:36:09
 for(i = 7; i >= 0;  i) {

通过执行i而不是i,您只写入了字节的[0-6]

你也不是在写二进制,你是在写0和1的字符,你想

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

将来

 char str1 = 1;
 char str0 = 0;

相关问题 更多 >