gpt4 book ai didi

ios - 从 iOS 的 compression_encode_buffer 解码 LZ4 输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 10:25:13 25 4
gpt4 key购买 nike

我有一个 iOS 应用程序压缩了一堆小数据 block 。我使用在 LZ4 模式下运行的 compression_encode_buffer 来执行此操作,以便它足够快以满足我的需求。

稍后,我将我制作的文件 [s] 取出并在非 Apple 设备上对其进行解码。以前我一直在使用他们的 ZLIB 压缩模式,并且可以在 C# 中使用 System.IO.Compression.DeflateStream 成功解码它。

但是,我对 LZ4 输出感到厌烦。基于 LZ4 文档 here ,Apple 将流分成一堆 block ,每个 block 以 4 字节魔数(Magic Number)、4 字节解压缩大小和 4 字节压缩大小开始。所有这一切都是有道理的,我能够将文件解析成其组成的原始 LZ4 block 。 iOS 输出缓冲区中的每个 block 解压缩到大约 65,635 字节,在我的例子中大约有 10 个字节。

但是然后:我不知道如何处理我剩下的 LZ4 block 。我试过用 LZ4net 的 LZ4.LZ4Stream、LZ4net 的 LZ4.LZ4Codec 解码它们(它管理第一个 block ,但当我输入第二个 block 时失败)。我还尝试了几个 C++ 库来解码数据。他们每个人似乎都在寻找 iOS 压缩函数以非标准方式编码的 header 。

最佳答案

我自己的回答:Apple 的 LZ4 解压缩器(经过必要的修改以处理其原始存储格式)在这里:https://opensource.apple.com/source/xnu/xnu-3789.21.4/osfmk/vm/lz4.c.auto.html

事后编辑:我实际上无法让它工作,但我没有花太多时间在它上面,因为我找到了 Apple 的 LZFSE 解压器。

LZFSE 解压器可以在这里找到:https://github.com/lzfse/lzfse

关于ios - 从 iOS 的 compression_encode_buffer 解码 LZ4 输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42755614/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com