Вот код, который я использую:
Код: Выделить всё
import zlib
original_compress = '78010dc2390a80400c05d052b4d4ce4a3c8024933fdb719259c046c1c2f32bbc696ba098cd92b23242ed66625db568498d106d5e22e0202e4b622f082c24eba0577deeb3eee34bfe20fa7df036131b0000f53a00000000'
print('original_compress:', original_compress)
# Decompress the data
decompress = zlib.decompress(bytes.fromhex(original_compress))
print('decompress:', decompress.hex())
# Recompress the data
again_compress = zlib.compress(decompress)
print('again_compress:', again_compress.hex())
# Compare the results
if original_compress == again_compress.hex():
print('Matched')
else:
print('NotMatched')
Распаковка работает нормально с zlib, поэтому я предполагаю, что это формат, совместимый с zlib.
Однако повторное сжатие не дает результата побайтовое совпадение с исходными данными.
Наблюдения:
Исходные сжатые данные начинаются с 78 01, что предполагает использование заголовка zlib (возможно, DEFLATE без сжатия).
Распакованные данные действительны, и я могу подтвердить целостность распаковки.
Вопросы:
Как я могу воспроизвести точный исходный сжатый результат? Существуют ли определенные параметры или флаги, которые мне нужно использовать с zlib?
Могут ли исходные данные использовать специальную или нестандартную реализацию сжатия? Если да, то как я могу это определить?
Существуют ли какие-либо инструменты или библиотеки (помимо zlib), которые могут помочь мне перепроектировать используемый формат сжатия?
Подробнее здесь: https://stackoverflow.com/questions/792 ... essed-data
Мобильная версия