zlib解压缩后

问题描述

我从.PDF中获取了原始数据集,并尝试对其进行解压缩,而又不会丢失数据。

这是我的一些代码

# Decompression
decompress_data = zlib.decompress(open('test.raw','rb').read())
decompress_file = open('test.raw.temp','wb')
decompress_file.write(decompress_data)
decompress_file.close()

# Compression
compress_data = zlib.compress(open('test.raw.temp','rb').read())
compress_file = open('test.raw_','wb')
compress_file.write(compress_data)
compress_file.close()

您会看到我解压缩了test.raw并获得了临时数据,反之亦然。

因此得到了压缩文件-test.raw_,但是问题在于原始文件的数据大小-test.raw有所不同。

当我更改压缩级别时,解压缩后的大小保持不变。

星期四hxd编辑器,我知道原始原始文件具有认压缩头-789C

CMF |  FLG
0x78 | 0x01 - No Compression/low
0x78 | 0x9C - Default Compression
0x78 | 0xDA - Best Compression 

因此,我认为最好的压缩级别是6。它返回相同的标头,但大小仍然不同。

我在哪里取得了错误的进展?

请帮助我。

解决方法

您没有问题。无法保证解压缩后再压缩的结果将为您带来完全相同的效果。无损压缩的唯一保证是 compression 后跟 decompression 将为您提供完全一样的东西。

获得期望的唯一方法是,如果使用完全相同的压缩代码,该代码的完全相同的版本以及为该代码提供的完全相同的参数,那么无论由谁执行或执行任何操作,从PDF提取的数据的原始压缩。