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