用字节切片法解压压缩的ZLib字符串

2024-09-29 09:30:43 发布

您现在位置:Python中文网/ 问答频道 /正文

我在代码中使用以下行:

payloadByte = zlib.compress(str.encode("hello"))
print(zlib.decompress(payloadByte[0:4]))

但是,zlib抛出以下错误:

^{pr2}$

我需要使用字节切片技术,因为我必须从一个大字节数组的特定点解压缩。我使用一个结构创建了这个字节数组,如下所示:

messageIdByte = struct.pack("i", int(messageId))
payloadByte = zlib.compress(str.encode("hello"))
return messageIdByte + payloadByte

在本例中,我已经将结构解压缩如下:

messageId = struct.unpack("i", bytes[0:4])[0]

现在,我需要从字节数组中解压字符串,但是获取特定的字节[4:8]会产生这个错误。在


Tags: 代码hello字节错误数组结构compressstruct
1条回答
网友
1楼 · 发布于 2024-09-29 09:30:43

问题可能是你试图解压的数据并不是你想象的那么大。例如,在您的示例中,当您使用zlib压缩字符串“hello”时,结果是13个字节长,但是您的代码假定得到的压缩字符串是5个字节。试试这样的方法:

x = len(payloadByte)
# elsewhere in the code where decompression happens
zlib.decompress(bytes[4:(4+x)])

以确保检索的是整个压缩数据块。在

相关问题 更多 >