在 Python 中写入和在 C 中写入之间的文件大小不同
Differents size of files between writing in Python and writing in C
我想知道为什么当我用 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);
谢谢
for(i = 7; i >= 0; --i) {
通过 --i 而不是 i-- 你只写了字节的 [0-6]。
你也不是在写二进制,你在写0和1的字符,你会想要
char str1[] = "1";
char str0[] = "0";
成为
char str1 = 1;
char str0 = 0;
我想知道为什么当我用 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);
谢谢
for(i = 7; i >= 0; --i) {
通过 --i 而不是 i-- 你只写了字节的 [0-6]。
你也不是在写二进制,你在写0和1的字符,你会想要
char str1[] = "1";
char str0[] = "0";
成为
char str1 = 1;
char str0 = 0;