C文件中的位数不均匀

时间:2014-04-17 09:39:42

标签: c file

我正在做考试准备,并且不确定以下问题的含义是考虑到文件以不均匀的位数结束的情况。感谢

写一个文件的C抽象数据类型(ADT),允许一次一位地写入文件。您的ADT应支持打开新文件,向文件写入一些操作并关闭的操作文件。请注意,您需要在ADT中使用普通的C文件功能。您还需要考虑文件以不均匀的位数结束的情况。

3 个答案:

答案 0 :(得分:1)

普通C工具允许您只写入完整字节的数据。您可以创建一个4字节长的文件,包含16位数据或5字节长,包含24位数据。您不能将20位写入文件,因为您无法保存半个字节。

为了做你想做的事,你需要创建一些包装器:比如说,第一个字节包含最后一个字节中“有意义”的位数。这样你就可以写出第一个字节“4”(4位在“偶数”16的顶部),然后是5个字节的数据,其中最后一个字节包含4个最年轻的位上的任何垃圾。

答案 1 :(得分:0)

这意味着您有多个位,而不是8的倍数。

这可能有问题的原因是因为可以写入文件的最小单位是一个字节,即8位。

这意味着您的新文件格式必须对某种元数据进行编码,以准确跟踪从文件读取时要重新解释的位数。

答案 2 :(得分:0)

这类似于具有而不是字节(8位)长度的各种加密方案。

简单地将附加到文件的额外最后一个字节视为前一个字节中 padding 位数的计数。额外字节的值为0到7(或0到CHAR_BIT - 1)