You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用python-lz4解压lz4net压缩的未知长度内容报错如何解决

问题原因

C# lz4net库的LZ4Codec.WrapHC()方法输出的压缩数据格式与python-lz4默认块解压格式不匹配:LZ4Codec.WrapHC()输出的内容前4字节为小端序存储的原始未压缩数据长度,后续才是实际LZ4压缩块内容,python-lz4默认不会主动解析该前缀作为解压缓冲区大小,因此直接解压会报错。

解决方案

先从压缩数据中解析出前缀存储的原始未压缩长度,再传入解压接口即可,修改后代码如下:

import lz4.block
import struct

with open("compressed.msgpk", "rb") as f:
    content = f.read()
    if content[0] == 1:
        # 解析前4字节小端序存储的原始未压缩长度
        uncompressed_size = struct.unpack("<I", content[1:5])[0]
        # 传入实际压缩内容与原始长度完成解压
        uncompressed = lz4.block.decompress(content[5:], uncompressed_size=uncompressed_size)

注意事项

如果按上述修改仍报错,可检查压缩侧是否在LZ4Codec.WrapHC()输出后额外追加了其他自定义头部,确认压缩数据结构与上述逻辑匹配即可。

内容的提问来源于stack exchange,提问作者Waqas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.28 01:06:08