小编use*_*827的帖子

了解 zlib 头文件;CMF (CM, CINFO), FLG, (FDICT/DICTID, FLEVEL);RFC1950 § 2.2。数据格式

我对 zlib 数据格式很好奇,并试图理解 RFC1950 中描述的 zlib 标头(https://tools.ietf.org/html/rfc1950 ) 中。然而,我对这种低级解释很陌生,似乎与我的一些结论相冲突。

我有以下压缩数据(来自 PDF 流对象):

b'h\xdebbd\x10`b`Rcb`\xb0ab`\xdc\x0b\xa4\x93\x98\x18\xfe>\x06\xb2\xed\x01\x02\x0c\x00!\xa4\x03\xc4'
Run Code Online (Sandbox Code Playgroud)

在python中,我已经成功解压并重新压缩了数据:

b'x\xdacbd\x10`b`Rcb`\xb0ab`\xdc\x0b\xa4\x93\x98\x18\xfe>\x06\xb2\xed\x01!\xa4\x03\xc4'
Run Code Online (Sandbox Code Playgroud)

正如我所了解的Deflate 和 inflate for PDF 中的讨论/答案,使用 zlib C++ 压缩数据的结果差异应该无关紧要,因为它是不同应用方法压缩数据的影响。

假设最后四个字节!\xa4\x03\xc4是 ADLER32(Adler-32 校验和),我的问题与前 2 个字节有关。

  0   1     0   1   2   3                             0   1   2   3
+---+---+ +---+---+---+---+ +=====================+ +---+---+---+---+
|CMF|FLG| |    [DICTID]   | |...compressed data...| |    ADLER32    |
+---+---+ +---+---+---+---+ +=====================+ +---+---+---+---+
Run Code Online (Sandbox Code Playgroud)

CMF

第一个字节代表 CMF,在我的两个实例中是

  • chr h = dec 104 = hex 68 = 01101000
  • chr x = dec …

pdf zlib python-3.x

2
推荐指数
1
解决办法
1340
查看次数

标签 统计

pdf ×1

python-3.x ×1

zlib ×1