0

我想将大量信息逐位存储到一个块中,并将其保存到一个文件中。

为了让我的文件不那么大,我想使用少量位来保存指定的信息而不是 int。

例如,我想将 Day、Hour、Minute 存储到文件中。

我只想要 5 位(天)+ 5 位(小时)+ 6 位(分钟)= 16 位内存用于数据存储。

我找不到一种有效的方法将它存储在一个块中以放入文件中。

我担心有一些大问题:

  1. 我每次要存储的数据长度不是恒定的。这取决于传入的信息。所以我不能使用结构来存储它。

  2. 我的块中不能有任何未使用的位,我搜索了一些主题,其中提到如果我将 30 位存储在一个 int(4 字节变量)中,那么我保存的下一个 3 位将自动进入下一个 int。但我不希望它发生!

  3. 我知道我可以使用右移,左移将数字放入字符,并将字符放入块中,但效率低下。

我想要一个 char 数组,我可以继续将指定的位放入其中,并使用 write 将其放入文件中。

4

2 回答 2

1

我想我只会使用存储任何给定信息可能需要的最大值所需的位数。然后,霍夫曼在您编写数据时对数据进行编码(显然,霍夫曼在您读取数据时对其进行解码)。大多数其他方法可能效率较低,而且许多方法也可能更复杂。

于 2010-08-02T03:59:48.533 回答
0

我没见过这样的图书馆。所以恐怕你得自己写一个。反正不会难的。

关于效率。这种操作总是需要移位和掩码,因为很少有 CPU 支持直接对位进行操作,尤其是在两个机器字之间。唯一的区别是您或您的编译器进行翻译。

于 2010-08-02T06:36:28.550 回答