В принципе в теории и хрустовый депакер можно под это переделать, но я к сожалению слаб в пакерах вааще...
В принципе в теории и хрустовый депакер можно под это переделать, но я к сожалению слаб в пакерах вааще...
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Имхо, здесь вариантов не особо много:
1) хаффман: относительно сложно, плюс память на дерево нужна
2) арифметическое: еще сложнее и тоже надо памяти
3) токенизация (подозреваю, что это то, что требуется)
4) простейший LZ-based упаковщик с небольшим окном.
3 и 4 варианты могут хранить свой контекст на стеке, т.е. минимум лишней памяти. Но необходим препроцессинг и невысокий уровень сжатия будет.
Последний раз редактировалось Shadow Maker; 07.10.2008 в 23:32. Причина: Добавлено сообщение
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
А, ты вон о чем. Ясно... Токенизатор чтоли правда написать...
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
С любовью к вам, Yandex.Direct
Размещение рекламы на форуме способствует его дальнейшему развитию
Кстати говоря, если необходимо распаковывать данные по мере их поступления, то следует обратить внимание на реализации упаковки в модемах... Всякие там V42-bis и тому подобное. Думаю, что на эту тему можно даже сорцы найти (на C).
Добавлено через 1 минуту
А вообще, Shadow Maker, моя тебе рекомендация - не изобретать велосипед, а реализовать, как тебе тут рекомендуют, один из классических методов: LZ77, например. Тот же ASC LZSSPAC имел окно в 4 килобайта, а как круто жал игры для своего времени!
Добавлено через 3 минуты
Еще один довод в пользу чистого LZ77: раскомпрессор быстрый и короткий получается (см. декомпрессор ASC LZSSPAC). Раскомпрессия же кодов Хаффмана требует битовых сдвигов и потому тормозит.
Последний раз редактировалось Barmaley_m; 10.10.2008 в 14:57. Причина: Добавлено сообщение
Опять не в тему. LZ77 = ссылки назад на распакованное. Как я уже сказал - мне надо распаковывать на лету! Без ссылок на распакованное!
Вообще, просил конкретные тексты - а мне тут лечат какую-то ботву... Закрыто в общем.
Последний раз редактировалось Shadow Maker; 10.10.2008 в 17:55.
Свирепый агрессивно-депрессивный мордовец!
Не уверен - не напрягай!
Не сдавайся. Дыши?
Virtual TR-DOS
Самый простой и эффективный тогда - модифицированный RLE
Первый бит =0 - была компрессия, следом идёт указание количества байт и сам байт. Первый бит=1 значит байт не упакован. Ну и сам байт следом.
Очень потоковый, нет никакой более информации ДО.
Или вообще брать чистый RLE. Во всех остальных случаях опять уйдёшь к LZ* методам.
Или бери готовое дерево частот и чистый Хаффман. Как то не представляю что ещё тут можно придумать. Все мне известные пакеры кроме RIP используют LZ* методики
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)