DEFLATE差异?

所以我正在尝试创建一个用MMF2 + Lua制作的游戏的级别生成python脚本,我遇到了一个我无法解决的问题。

使用游戏生成一个带边框的16x16空级别会得到以下结果(被压缩):

78 5E 63 20 0A FC 27 00 40 86 8C AA C1 1D 02 23 3D 7C 08 27 32 00 9F 62 FE 10

这应该是一个扁平的18x18数组,其边缘有0x00,其余部分有0xFF

我的python脚本使用完全相同的输入生成以下代码:zlib.deflate:

78 9C 63 60 20 06 FC 27 00 46 D5 8C AA C1 A7 86 30 00 00 9F 62 FE 10

它们是不同的,但解压缩它们时会得到完全相同的数据。 但是,当我将数据放入游戏时,加载级别时会崩溃。

这两个值之间的真正区别是什么,我能修复它吗?

原文链接 https://stackoverflow.com/questions/69919482

点赞
stackoverflow用户1180620
stackoverflow用户1180620

以下是相同数据的两种不同编码,两者都有效,它们在复制序列方面略有不同。下面是两者的可读形式,首先是游戏中的形式:

! infgen 2.6 output
!
zlib
!
last
fixed
literal 0
match 37 1
literal 255
match 31 1
match 4 69
match 258 36
match 26 258
match 256 288
match 34 613
end
!
adler

然后是 zlib 的形式:

! infgen 2.6 output
!
zlib
!
last
fixed
literal 0 0
match 36 1
literal 255
match 31 1
match 258 36
match 258 36
match 28 36
match 34 1
end
!
adler

literal 表示流中插入的一个或多个字节。match 表示流中先前的字节的副本(可能与正在被复制的字节重叠),其中第一个参数是要复制的字节数,第二个参数是从中要复制的字节的距离(以字节为单位)。

2021-11-11 01:40:34