【问题标题】:What is the format of the data compressed using zlib and how to uncompress them from command line or other apps?使用 zlib 压缩的数据的格式是什么,以及如何从命令行或其他应用程序解压缩它们?
【发布时间】:2021-08-19 10:03:37
【问题描述】:

我正在使用qCompress() 来压缩文件中的数据。现在的要求是,这个文件应该是不可手动压缩的,无论是通过命令行还是通过一些标准的压缩工具。

由于qCompress() 使用 zlib 库,该文件的扩展名应该是什么(即 .zip、.gz、.bz 等)?
另外应该使用什么样的独立 cli 工具来解压缩此类文件?
(通过编程我们可以使用qUncompress())。

【问题讨论】:

    标签: c++ qt compression zlib file-extension


    【解决方案1】:

    文档很少,但据我所知,qCompress() 写入了一个四字节长度,后跟一个 zlib 流。该格式没有文件格式、扩展名或命令行工具。你必须自己写。

    这将非常简单。只需丢弃前四个字节,然后将其余字节提供给zlib(您的机器上可能已经安装了一个 C 库)。

    如果您使用的是 Unixish 系统,则可以使用 dd 去除前四个字节,然后将生成的 zlib 流提供给 pigz -dz

    【讨论】:

    • 从您的回答中得到提示,使用“zlib.h”的::compress2() 比通过qCompress() 路线更好。由于 qCompress() 是在 zlib 上实现的,因此在 Ubuntu 中通过 -lz 选项链接它更容易。我相信它也应该适用于其他平台。
    猜你喜欢
    • 1970-01-01
    • 2012-11-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-07
    相关资源
    最近更新 更多