Форум программистов, компьютерный форум, киберфорум
Python
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.77/13: Рейтинг темы: голосов - 13, средняя оценка - 4.77
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038

Распаковка lzma из bytes

24.07.2018, 22:58. Показов 2754. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Пытаюсь с помощью lzma модуля распаковать данные из бинарного файла имеющего определенную структуру. Но это не получается. Модуль ругается на
Code
1
_lzma.LZMAError: Input format not supported by decoder
Файл состоит из разделов либо с определенной структурой, либо с заголовком + данные сжатые через lzma в которых содержится описанная структура.

Описание заголовка раздела файла сжатого через lzma:
- беззнаковое целое 4 байта, скорее всего должно содержать надпись "LZMA"
- беззнаковое целое 4 байта little-endian "настоящий размер"
- беззнаковое целое 4 байта little-endian "lzma размер"
- 5 байт "свойства"

Я посмотрел в интернете описание структуры файлов LZMA и там написано примерно то же, только пункты 2, 3, 4 идут в обратном порядке. Пробовал менять их порядок, но ничего не получилось.

Я прикрепил файл с отдельно взятым разделом рассматриваемого файла.
Может у вас получится?
Вложения
Тип файла: zip data.zip (48.7 Кб, 4 просмотров)
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
24.07.2018, 22:58
Ответы с готовыми решениями:

Распаковка lzma
В практически единственной теме на весь инет процедура распаковки не работает. procedure LZMAdecompress(InStream, OutStream:...

Allowed memory size of 134217728 bytes exhausted (tried to allocate 46704001 bytes)
Вот такая проблема возникает при загрузке изображения, проблему устранил, но таким путём, которые мне не очень нравится. Суть такая,...

Ошибка: Fatal error: Allowed memory size of 268435456 bytes exhausted (tried to allocate 14 bytes) in
Здравствуйте! Возникла следующая проблема: Есть сайт ... Joomla 3.0.2 Шаблон RT Cerulean v1.0 Двигатель: Gantry v4.1.18 Сайт:...

2
294 / 265 / 48
Регистрация: 09.04.2013
Сообщений: 1,038
25.07.2018, 21:04  [ТС]
Так, мне пришлось долго копаться в с++ исходниках оригинального проекта и исходниках lzma питона чтобы понять как одно с другим соотносится.
Судя по размерам упакованных и распакованных данных (что совпадает с цифрами в заголовках), работает нормально, но пока не проверял правильные ли данные получаются.
Следующий код содержит два разных подхода к формированию фильтра для LZMA. Т.е. по сути это два способа формирования фильтра, но результат один и то же. Один из фильтров генерируется вручную согласно исходникам парсера данного типа файлов.
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
    def decompress(s):
        data = struct.unpack("4s I I 5s", s[:17])
        id = data[0] #"LZMA"
        full_size = data[1]
        compressed_size = data[2]
        properties = data[3]
        compressed_data = s[17:]
        compressed_data_size = len(compressed_data)
        dic_size = struct.unpack("<I",s[12+1:12+1+4])[0]
        d = struct.unpack("B", s[12:12+1])[0]
        lc = d % 9
        d = d // 9
        pb = d // 5
        lp = d % 5
        filter_1 = lzma._decode_filter_properties(lzma.FILTER_LZMA1, data[3])
        filter_2 = {
         "id":lzma.FILTER_LZMA1,
         "pb":pb,
         "lp":lp,
         "lc":lc,
         "dict_size": dic_size
        }
        #dec = lzma.LZMADecompressor(lzma.FORMAT_RAW, None,[filter_1])
        dec = lzma.LZMADecompressor(lzma.FORMAT_RAW, None,[filter_2])
        decompressed_data = dec.decompress(compressed_data)
        decompressed_data_size = len(decompressed_data)
        data = dec.unused_data
        if not data:
            raise AttributeError("data not fully decompressed")
        return decompressed_data

Не по теме:

вставлю строчку для поисковика
lzma valve source bsp map file format decompress

1
0 / 0 / 1
Регистрация: 11.07.2015
Сообщений: 7
01.10.2022, 07:34
Спасибо вам wingblack за ваш код он помог мне распаковать данные !!!
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
01.10.2022, 07:34
Помогаю со студенческими работами здесь

Fatal error: Allowed memory size of 16777216 bytes exhausted (tried to allocate 1572864 bytes)
Доброго времени суток уважаемые участники форума. Не так давно взялся за тех. поддержку сайта клиента, проблема в том, что на серваке...

Warning: POST Content-Length of 13305751 bytes exceeds the limit of 8388608 bytes in Unknown on line 0
Вот такая ошибка красуется на странице, но при этом в php.ini upload_max_filesize = 20M, file_uploads = On и post_max_size = 20M, а в форме...

При запуске tomcat должна была произойти распаковка war-файла, но распаковка не происходит
Здравствуйте! Такая проблема..экспортировал из eclipse в war-файл в папку webapps. При запуске сервера должна была произойти распаковка, но...

LZMA
Товарищи, где можно найти точное описание алгоритма сжатия LZMA? Книг толком по теории кодирования не нашёл, а в тех, что есть, про сжатие...

LZMA
Столкнулся с необходимостью провести LZMA сжатие, о нём ничего не знаю, использовал последнюю версию 7z с их сайта (у исходника несколько...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Функция установки текстового статуса в реквизите формы документа
Maks 01.04.2026
Алгоритм из решения ниже реализован на нетиповом документе "ВыдачаОборудованияНаСпецтехнику" разработанного в конфигурации КА2, в дополнении к предыдущему решению. На форме документа создается. . .
К слову об оптимизации
kumehtar 01.04.2026
Вспоминаю начало 2000-х, университет, когда я писал на Delphi. Тогда среди программистов на форумах активно обсуждали аккуратную работу с памятью: нужно было следить за переменными, вовремя. . .
Идея фильтра интернета (сервер = слой+фильтр).
Hrethgir 31.03.2026
Суть идеи заключается в том, чтобы запустить свой сервер, о чём я если честно мечтал давно и давно приобрёл книгу как это сделать. Но не было причин его запускать. Очумелые учёные напечатали на. . .
Модель здравосоХранения 6. ESG-повестка и устойчивое развитие; углублённый анализ кадрового бренда
anaschu 31.03.2026
В прикрепленном документе раздумья о том, как можно поменять модель в будущем
10 пpимет, которые всегда сбываются
Maks 31.03.2026
1. Чтобы, наконец, пришла маршрутка, надо закурить. Если сигарета последняя, маршрутка придет еще до второй затяжки даже вопреки расписанию. 2. Нaдоели зима и снег? Не надо переезжать. Достаточно. . .
Перемещение выделенных строк ТЧ из одного документа в другой
Maks 31.03.2026
Реализация из решения ниже выполнена на примере нетипового документа "ВыдачаОборудованияНаСпецтехнику" с единственной табличной частью "ОборудованиеИКомплектующие" разработанного в конфигурации КА2. . . .
Functional First Web Framework Suave
DevAlt 30.03.2026
Sauve. IO Апнулись до NET10. Из зависимостей один пакет, работает одинаково хорошо как в режиме проекта так и в интерактивном режиме. из сложностей - чисто функциональный подход. Решил. . .
Автоматическое создание документа при проведении другого документа
Maks 29.03.2026
Реализация из решения ниже выполнена на нетиповых документах, разработанных в конфигурации КА2. Есть нетиповой документ "ЗаявкаНаРемонтСпецтехники" и нетиповой документ "ПланированиеСпецтехники". В. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru