我正在一个项目中使用 MiniLZO 进行一些简单的压缩任务。我使用一个程序进行压缩,另一个程序进行解压缩。我想知道为解压缩缓冲区分配多少空间。如果能够避免在输出文件中添加一个声明解压缩数据所需空间的整数,我可以适当地多分配一些空间。那么如何确定可能需要多少空间呢?
经过一番思考,我认为这个问题归结为以下问题:lzo1x 压缩的最大压缩比是多少?
经过一番思考,我认为这个问题归结为以下问题:lzo1x 压缩的最大压缩比是多少?
由于您控制压缩器和解压器,建议您将输入分成固定大小的块进行压缩。在我的应用程序中,我每个块压缩高达64KB,然后发出压缩块的大小和压缩数据本身,因此压缩流实际上看起来像一系列压缩块:
length_of_block_1
block_1
length_of_block_2
block_2
...
解压后数据的最大大小明显与您首次压缩的数据的最大大小相同。
如果您的输入大小有一个上限,那么我想您可以使用它,但我必须说通常的做法是向压缩缓冲区添加一个标题,指定未压缩大小。