Сейчас на форуме: UniSoft, bartolomeo (+6 невидимых)

 eXeL@B —› Программирование —› [Ищу] Исходник LZB сжатия
Посл.ответ Сообщение


Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 23 ноября 2010 14:32
· Личное сообщение · #1

Есть у кого сорсы LZB алгоритма сжатия данных? Это алгос семейства LZSS.

-----
Yann Tiersen best and do not fuck





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 23 ноября 2010 15:09 · Поправил: reversecode
· Личное сообщение · #2

не исходники, но может поможет в поиске
http://www.fadden.com/techmisc/hdc/lesson11.htm
I believe LZB is used in the MS-DOS archiver "ARJ", but the author only provides source for the
decompressor (with the explicit limitation that the code can not be
used in another archiver program... what ever happened to the hacker
ethic?)





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 23 ноября 2010 16:18
· Личное сообщение · #3

ariants of LZ77 apply additional compression to the output of the compressor, which include a simple variable-length code (LZB), dynamic Huffman coding (LZH), and Shannon-Fano coding (ZIP 1.x)), all of which result in a certain degree of improvement over the basic scheme.

Судя по всему , в чистом виде не найти, так как это часть или опция ...

Version 0.3 Separated encoded and decode source to simplify creation of encode or decode only programs.
Uses a binary tree to store encoding dictionary.
Version 0.2 Uses variable length code words 9 to 15 bits long.

по ссылке michael.dipperstein.com/lzw/lzw-0.6.zip

Determining Code Word Length

The problem of determining the length of code words is only an issue when variable length code words are allowed. In the section on encoding, I discuss a method that uses an all ones indicator when code word bit lengths are to increase by one. When my decoder reads a code word that is all ones bits, it must increase the code word length by one bit without decoding that code word. All code words that follow are read using the new length and operation proceeds normally.

Version 0.2 of my implementation starts out using 9 bit code words and allows the code word length to grow to 15 bits.

Indicating Code Word Length

The problem of indicating how long code words are only occurs when variable length code words are used. If fixed length code words are used, there's no question about how many bits the decoder should use when reading the encoded data.

I'm not sure what the common practice is on variable length code words and leaving hints that allow the decoder to recognize a code word length change. My implementation is based on some ideas that kept me up one night, and it works just fine. There are two observations that lead me to my implementation:

Code words may be n bits long until the encoder is required to write a code word that needs n + 1 bits to represent it.
The indication that n + 1 bits are needed must be n bits long, because decoder is still reading n bits at time.
With those observations, everything fell into place. When the encoder needs n + 1 bits to write out a code word, it writes an n bit indicator Then all code words from that indicator until the next indicator will be written using n + 1 bits. An indicator only signals increased code word size. There is no way to decrease code word size.

For my indicator I use a code word of all ones at the current code word length. The consequence of using an all ones indicator is that the code word represented by that value also requires an extra bit. Suppose the encoder is using 9 bits and it needs to output the code word 511. 511 is 9 bits of all ones. A single 511 will cause the decoder to switch to reading 10 bit code words without decoding code word 511. To get around this, the encoder must write an indicator (511 in this case) to switch to 10 bits, then it must write the code word 511 using 10 bits.

Version 0.2 of my implementation starts out using 9 bit code words and allows the code word length to grow to 15 bits.

Сама страничка michael.dipperstein.com/lzw/

Другие вариации видимо также искать нужно ... Хотя может и путаю , так как описания везде разные , например simple variable-length code , бывает как variable-length code или еще как то , типично , не понятно это модификации или одно и тоже. Но в LZB деревья вроде тоже используются.

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 23 ноября 2010 17:50 · Поправил: PE_Kill
· Личное сообщение · #4

mak пишет:
Но в LZB деревья вроде тоже используются.

Угу в том то и дело что там используются бинарные деревья (Не коды хаффмана!).

-----
Yann Tiersen best and do not fuck





Ранг: 1053.6 (!!!!), 1078thx
Активность: 1.060.81
Статус: Участник

Создано: 23 ноября 2010 18:29 · Поправил: reversecode
· Личное сообщение · #5

это получается какойто новый алго, судя по
http://ieeexplore.ieee.org/xpl/freeabs_all.jsp?arnumber=4976490
если даже в wiki, о нём тишина




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 23 ноября 2010 18:30
· Личное сообщение · #6

reversecode пишет:
какойто новый алго


Lampel-Ziv-Bell 87

-----
127.0.0.1, sweet 127.0.0.1





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 23 ноября 2010 18:57
· Личное сообщение · #7

Алго не новый. Это LZSS с оптимизацией от by Bell, 1987 год, после него сразу появился LZH там очень мало добавлено в код, видимо поэтому не то что сорсов но и алгоритма сложно найти.

-----
Yann Tiersen best and do not fuck




Ранг: 65.4 (постоянный), 10thx
Активность: 0.020
Статус: Участник

Создано: 23 ноября 2010 19:27 · Поправил: V0ldemAr
· Личное сообщение · #8

http://www-lat.compression.ru/fido/ru.compress.0013.htm

С конференции ФИДО некро лог:

//////////////
BZ> А что такое LZB?
Тот же LZ77, только yказатели имеют pазличный pазмеp -- от 6 бит до 32 бит, что
позволяет кодиpовать цепочки до 1 символа ;))

Дело в том, что LZB фактически является статическим
Хаффменом с зашитыми в распаковщике таблицами.
//////////////
Походу нигде нету как вариант поискать патент Белла и самому код изменить




Ранг: 527.7 (!), 381thx
Активность: 0.160.09
Статус: Участник
Победитель турнира 2010

Создано: 23 ноября 2010 19:47
· Личное сообщение · #9

--> Тот самый Белл <-- диссеры, статьи, работы учеников и т.д. Может что нибудь выудишь.

-----
127.0.0.1, sweet 127.0.0.1





Ранг: 673.3 (! !), 400thx
Активность: 0.40.31
Статус: Участник
CyberMonk

Создано: 23 ноября 2010 21:23
· Личное сообщение · #10

Может ему емайл написать? Чтобы сразу указал , или может исходник скинул. Новозеландцы доброжелательные очень ... хотя не похож он , PE_Kill напишешь как решил вопрос? Если не будешь писать лично , то может я напишу?! Тоже интересно ...

-----
RE In Progress [!] Coding Hazard [!] Stay Clear of this Cube





Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 24 ноября 2010 00:59
· Личное сообщение · #11

PE_Kill
А для каких целей тебе алго, если не секрет?

-----
Всем не угодишь





Ранг: 568.2 (!), 465thx
Активность: 0.550.57
Статус: Участник
оптимист

Создано: 24 ноября 2010 02:22
· Личное сообщение · #12

Более подробная инфа о алго www.codenet.ru/progr/alg/modeling/026.php

-----
Чтобы правильно задать вопрос, нужно знать большую часть ответа. Р.Шекли.





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 24 ноября 2010 06:44
· Личное сообщение · #13

Bad_guy пишет:
А для каких целей тебе алго, если не секрет?

На заре интернета это было лучшее алго для сжатия исполняемых файлов. Вот и хочется поиметь его исходник для того, чтобы посмотреть чем оно так хорошо, ну и чтобы легче было писать декомпрессор для файлов, упакованных им. Например алгос используется в ASPack'ах последних (2.11 и выше), ASProtect. Посмотрев исходники потоковых декомпрессоров для этих пакеров (хоть и от доктора головы) видно что авторы медитировали, и сворачивали ассемблерный код.

-----
Yann Tiersen best and do not fuck





Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 24 ноября 2010 13:23
· Личное сообщение · #14

PE_Kill пишет:
чтобы легче было писать декомпрессор для файлов, упакованных им. Например алгос используется в ASPack'ах последних (2.11 и выше), ASProtect

А что если компрессор и декомпрессор прямо из них и выдрать? Я конечно понимаю, что найти исходник будет хорошо, но сомневаюсь, что он сам по себе так уж полезен сегодня в плане алгоса. Например есть же более мощный LZRW из того же семейства, LZMA. Кстати, в своё время с фуером мы почти смогли прикрутить LZMA в EXE пакер, он давал результаты реально лучше, чем ASPack, по-моему похожий алго был в WinUpack

-----
Всем не угодишь





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 24 ноября 2010 13:32
· Личное сообщение · #15

Да в WinUpack LZMA. Насчет выдрать, всё уже давно выдрано. Хотелось бы понять суть алгоритма. Вот например голова восстановил его из асм листинга, значит полностью понимал алгоритм от начала и до конца. Ладно придется тогда по отдельности LZ-Huff-Bell изучать, хотя может и не стоит, притомило что то.

-----
Yann Tiersen best and do not fuck





Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 24 ноября 2010 13:43
· Личное сообщение · #16

Голова очень хорошо разбирается в основах LZ-сжатия, зачем нам его вспоминать, всё равно он никому не расскажет

-----
Всем не угодишь





Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 24 ноября 2010 13:52
· Личное сообщение · #17

Кроме него больше некого в пример поставить. Остальные сурсы, что я видел - это либо асм рип, либо си сурсы в стиле array1,array2, encrypt_buff(при чем тут шифрование?) и т.д., даже в сорсах опенсорсных AV. Короче ладно, не будем больше. Вот нашел какую то реализацию LZB, явно не то, но суть алгоса понятна:
bgb-sys.sourceforge.net/lzbss.c

Закрывать топик не буду, может кто существенное что скажет, хотя вроде уже и нечего.

-----
Yann Tiersen best and do not fuck





Ранг: 536.4 (!), 171thx
Активность: 0.660.13
Статус: Администратор
Создатель CRACKL@B

Создано: 24 ноября 2010 14:09
· Личное сообщение · #18

По сути автор может подсказать где про его алго почитать можно. По мне сжатие данных это чистая математика, тут с наскока не разберешься, хотя алго Хаффмана очень простой, а вот LZ требует вдумчивости.

Одно время у меня была такая идея по сжатию EXE файлов: дизассемблер длин+последующее Хаффман-кодирование. Но на практике не проверил эффективность.

-----
Всем не угодишь




Ранг: 78.7 (постоянный), 43thx
Активность: 0.070
Статус: Участник

Создано: 24 ноября 2010 15:40
· Личное сообщение · #19

http://labs4.narod.ru/ishodnik/C/arhivators.html
Тут Есть кой чего ! Может Пригодиться !




Ранг: 793.4 (! !), 568thx
Активность: 0.740
Статус: Участник
Шаман

Создано: 24 ноября 2010 16:18
· Личное сообщение · #20

Bad_guy пишет:
дизассемблер длин+последующее Хаффман-кодирование

У меня есть нечто подобное в планах, только пока без дизасма. Хочу попробовать сделать свои фильтры препроцессинга, не понимаю почему у всех всё остановилось на e8/e9, можно же еще поиграться с представлением чисел в эндиан формате. Короче как дойду до этого обязательно напишу о результатах.

-----
Yann Tiersen best and do not fuck




Ранг: 49.8 (посетитель), 56thx
Активность: 0.090
Статус: Участник

Создано: 24 ноября 2010 16:49
· Личное сообщение · #21

PE_KillОчень интересно будет почитать. Успехов тебе!


 eXeL@B —› Программирование —› [Ищу] Исходник LZB сжатия
:: Ваш ответ
Жирный  Курсив  Подчеркнутый  Перечеркнутый  {mpf5}  Код  Вставить ссылку 
:s1: :s2: :s3: :s4: :s5: :s6: :s7: :s8: :s9: :s10: :s11: :s12: :s13: :s14: :s15: :s16:


Максимальный размер аттача: 500KB.
Ваш логин: german1505 » Выход » ЛС
   Для печати Для печати