У меня есть пакет данных, который сжимается на одном конце с помощью 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"
EDIT - Я в основном получаю сжатый пакет данных в виде строки. Затем я запускаю программу синтаксического анализа для извлечения информации из пакета сжатых данных, которая мне нужна, чтобы сообщить ему, как продолжить синтаксический анализ. Чтобы получить эту информацию, мне нужно разбить строку пакета данных на байты (что я делаю с помощью простой функции, которая просто захватывает первые два символа и объединяет их, добавляя их в пустой список, а затем переходя к следующим 2, и снова добавляем до конца). Позже я присоединяюсь к списку с пробелом между ними.
decompressed = zlib.decompress(compressed_hexstr)
print(f"decompressed: {decompressed}")
Возвращает
TypeError: требуется объект, похожий на байты, а не '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: требуется объект, похожий на байты, а не str кажется наиболее близким к моей проблеме (из-за всех подобных ошибок), но я все еще могу ' Кажется, это не работает.