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

FF7 LZSS压缩中raw_offset与real_offset物理含义及相关技术问题

FF7 LZSS压缩实现相关问题

偏移量计算与raw_offset含义困惑

我在为某手游的.lzs文件编写压缩/解压缩代码时,接触到Final Fantasy 7(FF7)的LZSS压缩实现,目前能完成解压缩,但对偏移量逻辑存疑:

  • 该实现的长度/偏移对采用12位偏移量,计算公式为:real_offset = tail - ((tail - 18 - raw_offset) mod 4096),其中tail是解压缩输出的当前位置,raw_offset由对中第二个字节的前4位加第一个字节的全部8位组成。
  • 常规LZSS的偏移量是当前位置到重复模式起始位置的反向距离(比如字符串ABCDEFABCGHIJ会被压缩为ABCDEF(6,3)GHIJ,6就是偏移量),但FF7的raw_offset物理含义完全搞不懂,甚至曾出现写入仅12字节时,real_offset达到3602导致IndexOutOfBounds错误的情况。

FF7 LZSS格式测试文件需求

现有的.lzs文件并非来自FF7,无法确认是否匹配该实现,需要获取采用该FF7 LZSS格式的测试文件。

文件末尾控制字节的处理疑问

当文件末尾的控制字节8位无法被剩余字节满足时,该如何处理?比如最后一个控制字节为0x00,意味着需要后续16字节(8个长度/偏移对),但实际仅剩余2字节,这种情况下是:

  • 输出1个对后补14个0x00?
  • 补7个0x00?
  • 还是仅输出该对?

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:45:55