我想将大量信息按位存储到一个块中,然后将其保存到文件中。
为了使我的文件不会太大,我想使用少量的位来保存指定的信息,而不是int。
例如,我要将日,时,分存储到文件中。
我只想要5位(天)+ 5位(小时)+ 6位(分钟)= 16位内存用于数据存储。
我找不到将其存储在块中以放入文件中的有效方法。
我担心一些大问题:
我每次要存储的数据长度不是恒定的。这取决于传入的信息。所以我不能使用结构来存储它。
我的块中不能有任何未使用的位,我搜索了一些主题,提到如果我将30位存储在int(4字节变量)中,那么我保存的下3位将自动进入下一个int。但是我不希望它发生!
我知道我可以使用向右移动,向左移动将数字放入一个char并将该char放入一个块,但这效率低下。
我想要一个char数组,可以继续将指定的位放入其中,并使用write将其放入文件中。
最佳答案
我想我只会使用必要的位数来存储任何给定信息所需的最大值。然后,霍夫曼在写入数据时对其进行编码(显然,霍夫曼在读取数据时对其进行解码)。大多数其他方法可能效率较低,许多方法也可能更复杂。
关于c++ - 如何将位存储到巨大的char数组中以进行文件输入/输出,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3384880/