使用文件流在字节中执行此操作很容易,但我无法使用bitarray工作。
我想开发文件压缩算法,这只是一种爱好。
所讨论的方法检查三个字节组合的组合出现是否足够出现以使文件大小在每个字节的开头添加两个比特,以确定下一个字节是否是预先存储的三个中的一个如果两个位都为零,则它假设为no,并继续读取该文件。现在为每个字节写入另一个字节会使所有这些都成为冗余。
如果有人能告诉我该怎么做,我会非常感激。
答案 0 :(得分:0)
正如我想要的那样,这是不可能的。额外的位是不可避免的,因为硬盘驱动器可以写入的最小单位是一个字节。额外的位必须在解压缩的逻辑中处理。一个防弹的解决方案是在文件的开头(或文件压缩存储元数据的任何地方)添加一些额外的位,它们代表最后一个字节的截止值。 3位是足够的,因为你可以用它代表数字7。 (显然没有一个额外的不必要的字节,因此,如果压缩文件仍可被8整除,这三个位应为000或数字为零,8不需要写入)这样一旦读取最后一个字节程序应该忽略与三位相等的位数。