我能够用"gzip“格式压缩某些内容,并将其存储在文件中。此内容可以在我的代码中以编程方式解压。
但我不能用命令行或其他工具“武装”他们。例如:"Hello“(11个字节)被正确地压缩为'test.txt.gz',但是在双击或命令行时,它会产生以下错误:

另一方面,如果我将相同的内容存储在.txt文件中并将其gzip存储到.txt中,那么它将被正确地解压。
将gzip内容存储到文件中的正确方法是什么?
下面是用于压缩/解压缩的C++14源代码 (参见:用GZip压缩字符串使用qCompress?)。
六角转储 (xxd -p /home/milind/Desktopp/test.txt.gz):
1f8b080000000000000b789cf348cdc9c95728cf2fca49010018ab043d52 9ed68b0b000000
发布于 2021-08-23 17:46:32
问题是,您编写了一个gzip头,然后使用一个zlib格式流跟踪它!您需要在gzip头后面使用原始的平放数据,而不需要zlib格式的包装。
不要使用compress2(),它只能生成zlib流。使用zlib.h中记录的deflate函数。您可以请求释放产生一个gzip流,因此您不需要自己编写标头,也不需要自己计算CRC-32。这都是由zlib提供的。
https://stackoverflow.com/questions/68871929
复制相似问题