代码之家  ›  专栏  ›  技术社区  ›  Steven Shih

如何将位存储到一个巨大的char数组中以供文件输入/输出

  •  0
  • Steven Shih  · 技术社区  · 14 年前

    我想把大量的信息逐块存储起来,然后保存到一个文件中。

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

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

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

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

    2. 我知道我可以用shift right,shift left把一个数字放到一个字符中,然后把字符放到一个块中,但是效率很低。

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

    2 回复  |  直到 10 年前
        1
  •  1
  •   Jerry Coffin    14 年前

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

        2
  •  0
  •   hpsMouse    14 年前

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

    关于效率。这种操作总是需要位移位和掩蔽,因为很少有cpu支持直接操作位,特别是在两个机器字之间。唯一的区别是你或你的编译器做翻译。