我正在尝试将原始二进制位一次写入文件。
我找到了一个使用unsigned char的示例 - > https://stackoverflow.com/a/2666669/1541965
但是最小大小是8位(因为unsigned char 0到255)。
有没有办法以更直接的方式将位写入文件?
感谢。
答案 0 :(得分:3)
您还没有说过您正在使用的操作系统。但通常,您写入文件的最小单位是一个8位字节。如果要编写单个位,则需要在自己的代码中将它们组合成字节。我不知道任何操作系统的文件IO设施允许写入单个位。
答案 1 :(得分:0)
不,没有,至少没有直接。 C的二进制文件的I / O模型是它们是字节序列(通常是8位)。
您可以在自己的代码中编写一个函数,该函数采用1位值并将这些位收集到一个字节中,当它接收到8位时将它们写入文件。如果尚未提交字节值,您还需要在结尾处进行额外的写入。
无法写入部分字节;如有必要,你可以根据需要用零填充最后一个字节。
(C标准要求一个字节至少 8位,但它允许它更多。一个字节中的位数由CHAR_BIT
指定,在在您可能遇到的任何系统上,<limits.h>
。CHAR_BIT
将完全为8。)
答案 2 :(得分:0)
计算机体系结构不允许您分割字节,即8位。 PC工作在8位。 Turing的Colossus工作在5位(因为在Baudot的代码中,数字2 ^ 5就足够了。)
微处理器没有处理小于一个字节的单位的指令(甚至比特操作,或者,在1,2,4,8位上使用)。