<p>您的第一个问题是不应该反转数据;只需去掉<code>[::-1]</code>。在</p>
<p>但是如果你这样做,你得到的不是错误-3,而是另一个错误-3,通常是关于一个未知的压缩方法。在</p>
<p>问题是这是一个无头的zlib数据,很像gzip使用的数据。理论上,这意味着有关压缩方法、窗口、start dict等的信息必须在文件中的其他地方提供(在gzip中,是通过gzip头中的信息提供的)。但在实践中,每个人都使用deflate with the max window size and no start dict,所以如果我在为游戏设计一个紧凑的格式,那时候每个字节都是计数的,我只需要硬编码。(在现代,这在RFC中被标准化为“压缩数据格式”,但90年代的大多数PC游戏并没有按照RFC设计……)</p>
<p>所以:</p>
<pre><code>>>> uncompressed_data = zlib.decompress(compressed_data, -zlib.MAX_WBITS)
>>> uncompressed_data[:8] # version
b'VER 9.8\x00'
>>> uncompressed_data[8:12] # unknown_const
b'\xf6(<A'
</code></pre>
<p>所以,它不仅被解压,看起来像是一个版本,而且…我猜任何东西看起来都像一个未知常数,但它在规范中是相同的未知常数,所以我认为我们很好。在</p>
<p>正如<a href="https://docs.python.org/3/library/zlib.html#zlib.decompress" rel="nofollow noreferrer">^{<cd2>}</a>文档所解释的,<code>MAX_WBITS</code>是默认的/最常见的窗口大小(也是通常称为“zlib deflate”而不是“zlib”使用的唯一大小),传递负值意味着头被抑制;其他参数可以保留为默认值。在</p>
<p>另请参见<a href="https://stackoverflow.com/a/22311297/4799491">this answer</a>、<code>zlib</code>文档中的<a href="http://www.zlib.net/manual.html#Advanced" rel="nofollow noreferrer">Advanced Functions</a>部分和<a href="http://www.ietf.org/rfc/rfc1951.txt" rel="nofollow noreferrer">RFC 1951</a>。(感谢OP找到链接。)</p>