我在编写' 1'和' 0'作为文件中的二进制文件。 以下是我尝试做的一个例子:
int main(){
FILE * file;
file = fopen("file" , "w+b");
char buffer[8] = "11001100"; // 8 bits-> 1 byte to write
fwrite(buffer,1,8,file);
fclose(file);
return 0;
}
问题是它在文件中写入文本(写入8个字节),而不是二进制文件/只有1个字节。
我做错了什么?
提前感谢您的帮助。
答案 0 :(得分:0)
我认为您可以使用0b
前缀...
GNU doc
0b
说你正在写一个字节。
如果你写这样的想法:
int main(){
FILE * file;
file = fopen("file" , "w+b");
char c;
c = 0b11001100
fwrite(&c,1,1,file);
fclose(file);
return 0;
}
答案 1 :(得分:-1)
您必须将包含二进制数字符串的字符串转换为字节。您可以自己执行此操作,也可以使用strtol()
:
char *buffer = "11001100"; // 8 chars
char *behind;
char byte = (char)strtol(buffer, &behind, 2); // Base 2 for a binary number
fwrite(&byte,1,1,file); // 1 element with 1 byte ach