Я использую следующие строки в моем коде:Распаковка сжатых ZLib строки с Byte нарезка
payloadByte = zlib.compress(str.encode("hello"))
print(zlib.decompress(payloadByte[0:4]))
Однако Zlib проливает следующее сообщение об ошибке:
zlib.error: Error -5 while decompressing data: incomplete or truncated stream
Мне нужно использовать методы байт нарезки из-за того, что я должен распаковываться из определенной точки в большом массиве байтов. Я создал этот байтовый массив, используя-структуру, например, так:
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] дает эту ошибку.
Не могли бы вы пояснить, зачем вам это нужно? В примере, который вы приводите, проблема заключается не в том, что вы декомпрессируете срез массива, а в том, что вы декомпрессируете то, что не является допустимым, сжатым фрагментом данных zlib. – Irisshpunk
Я обновил свой вопрос, чтобы надеяться, отразить то, что я хочу, чтобы код делал. – Rob
Возможно, это будет то, что вы ищете: http://stackoverflow.com/questions/1838699/how-can-i-decompress-a-gzip-stream-with-zlib? – Dekel