我正在尝试读取XRef流对象,但有些东西没有加起来。这是我的目标:
<<
/DecodeParms << /Columns 5/Predictor 12 >>
/Filter /FlateDecode
/ID [<9597C618BC90AFA4A078CA72B2DD061C><48726007F483D547A8BEFF6E9CDA072F>]
/Index [124332 848]
/Info 124331 0 R
/Length 137
/Prev 8983958
/Root 124333 0 R
/Size 125180
/Type /XRef
/W [1 3 1]
>>
我读取了137个字节的流,通过zlib解压缩它们,得到5088字节。这是未压缩流的开始(hexdump -C输出):
00000000 02 01 00 00 10 00 02 00 00 27 ec 00 02 00 00 01 |.........'......|
00000010 f4 00 02 00 00 01 f7 00 02 00 00 04 5b 00 02 00 |............[...|
00000020 00 02 68 00 02 00 00 0b ac 00 02 00 00 0f e5 00 |..h.............|
00000030 02 00 00 0e 93 00 02 00 00 0d 14 00 02 00 00 0d |................|
我不明白的是每个条目应该有5个字节:/ W [1 3 1]表示1 + 3 + 1 = 5个字节;但是流的长度5088不能被5整除。另外,我意识到5088可以被6:5088/6 = 848整除,这是/ Index键的第二个值确认的条目数。在第二个条目处读取保持[1 3 1]方案的流也是不可能的(字节0xEC不是有效的条目类型)。 哪里是我的错?
非常感谢您的帮助。
答案 0 :(得分:0)
解压缩后,每行有6个字节:1个字节用于预测器,5个用于“预测”数据。
应用预测变量后,您将获得实际数据。