可以向文件写入少于1个字节

时间:2011-07-14 23:39:34

标签: c file low-level bits

据我所知,C中的最小单位是byte。这种约束来自哪里? CPU?

例如,如何将nibble或单bit写入文件?

4 个答案:

答案 0 :(得分:19)

不,你不能......文件按字节组织,它是你可以保存的最小数据。

实际上,通常,1个字节将占用超过1个字节的空间。根据操作系统,系统文件类型等,您保存为文件的所有内容都将使用至少一个块。块的大小根据您使用的文件系统而有所不同。然后,这个1位将被写为1字节,并且可以占用多达4kB的磁盘。

wikipedia中,您可以阅读有关该字节是许多计算机中最小数据单元的内容。

答案 1 :(得分:7)

实际上,它是char - byte不是标准的C类型。

约束来自C标准并且是重言式的:char是C中最小的完整类型,因为它被定义为这样,并且所有其他类型的大小被定义为{{的大小的倍数1}}(其大小始终为char。)

现在,1的数量因平台而异。位数最终往往是硬件定义的,尽管现在大多数系统都使用8位char s。 char应该代表最小的可寻址内存单元(同样,根据定义。)

答案 2 :(得分:3)

此外,数据被写入扇区中的文件(例如512字节左右)。如果我们只需要改变一个字节,就会读取,修补和写回整个扇区。

但你不需要思考各个部门。要更改一位,只需在文件中寻找合适的字节位置,读取该字节,更改位并将结果写回。

答案 3 :(得分:-2)

您可以获得的最小长度是1个字节。最多等于二进制1。 如果您保存一个名为binary.bin的文件,其中仅包含1,则将占用1个字节