我有一个数据包,它的一端使用zlib进行压缩
我需要在另一端使用Python(我也在使用zlib)解压缩数据包
在我看来,这应该是相当简单的,然而,我没有任何成功
我的数据基本上就是这样的:
# Compressed hex string (formatted by me with a space in between bytes):
compressed_hexstr = "10 84 35 4F 3E A3 CE E1"
编辑-我基本上是以字符串的形式获取压缩数据包。然后我运行一个解析程序,从压缩数据包中提取信息,告诉它如何继续解析。要获得这些信息,我需要将数据包字符串拆分为字节(我使用一个简单的函数来实现这一点,该函数只需获取前两个字符并将它们放在一起,将它们附加到一个空列表中,然后继续执行下一个2,并再次附加到最后)。后来,我加入了列表,中间有一个空格
decompressed = zlib.decompress(compressed_hexstr)
print(f"decompressed: {decompressed}")
返回
TypeError: a bytes-like object is required, not 'str'
我还将十六进制字符串转换成字节(使用bytes.fromhex()
)和字节数组(使用bytearray.fromhex()
)
我得到以下错误:
Using bytes.fromhex(compressed_hexstr):
>> zlib.error: Error -3 while decompressing data: incorrect header check
Using bytes.fromhex(compressed_hexstr, -15): **NOTE: I don't quite understand the wbits argument**
>> zlib.error: Error -3 while decompressing data: invalid stored block lengths
Using bytearray.fromhex(compressed_hexstr):
>> zlib.error: Error -3 while decompressing data: incorrect header check
Using bytearray.fromhex(compressed_hexstr, -15):
>> zlib.error: Error -3 while decompressing data: invalid stored block lengths
zlib TypeError: a bytes-like object is required, not 'str'似乎是我发现的最接近我的问题的东西(因为所有类似的错误),但我似乎仍然无法让它工作
10 84 35 4F 3E A3 CE E1
,当转换为字节时,不是zlib数据。它不以zlib头开始,如果解释为原始放气流,则无效我建议您在另一端压缩数据后立即查看数据,并将其与接收到的数据进行比较
相关问题 更多 >
编程相关推荐