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

如何按rfc1951规范解压deflate/zlib数据?求Red语言decompress/deflate用法示例

错误原因

你遇到的崩溃是参数使用错误导致的:Red的decompress/deflate接口不需要手动传入原始数据长度作为第二个参数,你传入的326会被程序识别为内存地址进行访问,因此触发了「无效虚拟地址」的运行时错误。

正确使用示例

/deflate限定词专门用于处理符合RFC1951规范的纯deflate裸流(无zlib头、无gzip封装,对应你用到的zlib-flate -uncompress命令处理的流格式),正确写法不需要额外参数:

; 首先验证b1是合法的deflate裸流后,直接执行
decompress/deflate b1

完整可运行的加解压验证示例如下:

>> origin: to binary! "Red语言deflate解压测试内容"
== #{526564E8AFADE8A8806465666C617465E8A7E3E58E8BE6B58BE8AF95E58685E5AEB9}
; 压缩为纯deflate裸流
>> compressed: compress/deflate origin
== #{534AC94C5370492C294D7548CECF4D2D49C928CECF4D730632979AB2B738050062E909A81A999A9159899B5799925A1498385950B00}
; 解压纯deflate裸流
>> decompressed: decompress/deflate compressed
== #{526564E8AFADE8A8806465666C617465E8A7E3E58E8BE6B58BE8AF95E58685E5AEB9}
>> to string! decompressed
== "Red语言deflate解压测试内容"

如果你的压缩流是带zlib封装的RFC1950格式,直接使用不带限定词的decompress即可:

>> zlib_compressed: compress origin
== #{789C534AC94C5370492C294D7548CECF4D2D49C928CECF4D730632979AB2B738050062E909A81A999A9159899B5799925A1498385950B0035830C7F}
>> to string! decompress zlib_compressed
== "Red语言deflate解压测试内容"

注意事项

  • 仅当确认待解压的二进制流是无任何封装的纯RFC1951裸流时,才需要加/deflate限定词
  • 不需要手动传入任何长度参数,Red的解压接口会自动解析流内容
  • 若按上述写法仍出现错误,可先通过zlib-flate -uncompress命令验证待解压的流本身合法有效

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 00:06:03