Верхний пост

Mar 16, 2037 20:58

Всем привет ( Read more... )

Leave a comment

anonymous March 10 2014, 21:01:15 UTC
Добрый день!
Я незарегистрирован в ЖЖ, так что сори, что "инкогнито". Просто ваша статья про DEFLATE мне очень помогла в том, чтобы разобраться.
Моя цель собственно не раскодировать, а закодировать. Однако что-то с динамическим Хаффманом у меня не складывается. Уже сократил собственно кодируемые (в смысле распакованные) байты до 2х, но всё равно не понимают программы мою кодировку.
Вы не могли бы попробовать раскодировать следующее 78 9C 05 20 00 49 F6 4F 61 54 01 00 04 02 00 A2 00 A1 (это выделен чисто zlib, включая заголовок и Adler32) и может подскажете что не так?
Потому что я уже с ума схожу, всё перепроверил десятки раз - ну не вижу, что не так...

Reply

fat_crocodile March 10 2014, 21:56:38 UTC
у меня декодировалось два байта с кодами 00 и a0
но это я не руками, а программно, то есть подробности не смотрел.
и мой код сразу отбрасывает первые два и последние четыре байта, т.е. адлера не проверяет

а zlib (питоновский) на это выбрасывает "zlib.error: Error -3 while decompressing data: invalid code lengths set"

интересно, попробую разобраться

Reply

anonymous March 13 2014, 21:28:59 UTC
А где можно эти чекеры взять?

Reply

fat_crocodile March 13 2014, 21:36:21 UTC
Какие чекеры?

Кстати если у Вас есть почта, можно по ней попробовать. Я просто скоро уеду на две недели, отвечать не смогу, потом отвечу, но чтобы Вы ответы прочитали -- проще по почте. Свой адрес добавил в пост.

Reply

fat_crocodile March 13 2014, 21:38:21 UTC
а, если про код, которым я декодировал, то пока нигде.
я его причешу и выложу на гихаб, но попозже.

Reply

fat_crocodile March 10 2014, 22:29:10 UTC
а, я понял ( ... )

Reply

anonymous March 11 2014, 20:46:33 UTC
Спасибо огромное!
Действительно помогло. Мне и в голову не приходило такое. Я ведь большие массивы пробовал с кодами меньшей длины и всё равно что-то не получалось. Тут уже всё сократил до минимума (8-битные коды были выбраны чисто из-за того, чтобы меньший перечень HCLEN использовать).

Так получается, что нужно обязательно использовать все длины кодов с единицы? (Потому как пробовал только двойки - не прошло). Тогда мне не понятно почему нужно было создавать этот перечень длин в таком странном порядк, где единица предпоследняя...

Reply

fat_crocodile March 11 2014, 20:56:41 UTC
Насколько я понимаю, нужно чтобы кодирование было оптимальным, иначе zlib считает его некорректным.

Reply

fat_crocodile March 11 2014, 20:59:43 UTC
> Тогда мне не понятно почему нужно было создавать этот перечень длин в таком странном порядк, где единица предпоследняя...

обычно единица не требуется, у Вас просто очень мало символов, тут по хорошему вообще не нужно было ничего сжимать, меньше места бы занимало. Схема рассчитана на то, чтобы быть оптимальной в среднем случае, а не в каждом.

Reply

anonymous March 11 2014, 23:01:29 UTC
Да это ж для пробы было, просто вручную уже запереписывался этими кодами... А вручную надо, чтобы понять все нюансы. Просто смущало то, что начинал я с массива в где-то 110 байт и там было что сжимать. Пользовал 3х значные коды (как мне казалось, что одной длины ведь удобнее), но тоже что-то не получалось, хотя... мне кажется я догадываюсь где там могли быть ещё ошибки.
В общем ладно, будем ещё экперементировать. А вам спасибо ещё раз!

Reply


Leave a comment

Up