将原始二进制文件写入C中的文件

时间:2012-07-21 00:10:31

标签: c binary

我正在尝试将原始二进制位一次写入文件。

我找到了一个使用unsigned char的示例 - > https://stackoverflow.com/a/2666669/1541965

但是最小大小是8位(因为unsigned char 0到255)。

有没有办法以更直接的方式将位写入文件?

感谢。

3 个答案:

答案 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位上使用)。