0

我一直在互联网上搜索一个库或一段代码,它们将帮助我用这种类型的编码解压缩 XFDL 文件:application/x-xfdl;content-encoding="asc-gzip"。我处理过的所有以前的 XFDL 文件都有这种类型的编码:application/vnd.xfdl;content-encoding="base64-gzip",而且我使用 Base64 和 GZIP 没有问题(github 上的两个库由尼克洛克伍德撰写)。我在 Python 中找到了可以解压缩这些类型的文件的代码,位于:http ://www.ourada.org/blog/archives/375 ,但我不知道如何将这段代码实现为一个Objective-C项目。

任何帮助或向正确方向轻推将不胜感激。

谢谢!

4

1 回答 1

2

我发现的asc-gzip例子实际上是 zlib,然后是 base-64 编码的。它被分成块,每个块前面都是按大端顺序压缩和未压缩的长度,每个块两个字节。

所以要解码:

  1. Base-64 解码整个事情。然后在解码的字节上:
  2. 以大端顺序从前两个字节计算下一个压缩长度。称之为c
  3. 以大端顺序从接下来的两个字节计算下一个未压缩的长度。叫它
  4. 使用zlib解码由下一个c字节组成的 zlib 流。验证 zlib 是否准确解码了c字节,并且生成的未压缩数据长度正好为u 字节。
  5. 从第 2 步开始重复,直到数据被消耗完。(它应该全部被完全消耗掉。)

有趣的是,“ asc”和“ gzip”都是编码名称的误称。 asc真正的意思是base 64,gzip真正的意思是zlib。去搞清楚。

于 2013-03-09T03:56:39.887 回答