Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Вниз

Простенький архиватор.   Найти похожие ветки 

 
MegaVolt ©   (2004-04-05 12:52) [0]

Предложите простенький архиватор. Он нужен для сжатия файла и последующего его расжатия в микроконтроллере. Т.е. алгоритм по максимуму простой. Было бы хорошо если бы была реализация его на PC чтобы оценить результат :)

Заранее благодарен :)


 
MBo ©   (2004-04-05 13:04) [1]

Какого характера данные?


 
han_malign ©   (2004-04-05 13:13) [2]

Проще Хафмана еще ничего не придумали, если статистический характер данных известен, таблица может быть статической...
(Вроде не перепутал - Хеминг это контроль и коррекция с избыточностью, или наоборот?)
Реализация на PC - практически все архиваторы, за исключенем основанных на косинус преобразовании(mp3,jpeg)...


 
MegaVolt ©   (2004-04-05 13:15) [3]

Вот кусок: стандартные архиваторы жмут файл в 30-35 раз.

0003cb10h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FE ; 0003cb20h: 6F FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ; 0003cb30h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cb40h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cb50h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cb60h: F3 7F FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cb70h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cb80h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cb90h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cba0h: FF 99 FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cbb0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cbc0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cbd0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cbe0h: FF F8 DF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cbf0h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cc00h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cc10h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cc20h: FF FF E6 BF FA FF AF FA FF AF FA FF AF FA FF AF ;
0003cc30h: FA FF AF FE BF EB FE BF EB FE BF EB FE BF EB FE ;
0003cc40h: BF EB FF EB FE BF EB FE BF EB FE BF EB FE BF EB ;
0003cc50h: FE BF FA FF AF FA FF AF FA FF AF FA FF AF FA FF ;
0003cc60h: AF FF FD 37 FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cc70h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;
0003cc80h: FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF FF ;


 
MBo ©   (2004-04-05 13:20) [4]

Если весь файл будет такой, чистый хаффман раз в 5 сожмет, но с предварительным RLE или нуль-сериями(в данном случае FF-сериями) будет гораздо лучше.


 
MegaVolt ©   (2004-04-05 13:24) [5]

А где почитать алгоритм? И 5 раз как то маловато :( Я думал достаточно просто было бы раз в 15 :(


 
MBo ©   (2004-04-05 13:32) [6]

В интернете есть описание.
Хаффман основан на том, что часто встречающиеся символы заменяются короткой последовательностью битов (FF будет кодироваться одним нулевым битом, скорее всего) - т.е. максимум в 8 раз.
Однако длинные серии FF можно предварительно сжать Run-Length Encoding


 
MegaVolt ©   (2004-04-05 13:34) [7]

А в нормальных архиваторах заменяют нулём 4 байта? Т.е. FF FF FF FF заменяется но 0?


 
MBo ©   (2004-04-05 13:43) [8]

нет. LZ (ZIP)семейство вообще на других принципах основано (составление словаря повторяющихся строк разной длины), а хаффман/арифметическое кодирование работает обычно с байтами, чтобы дерево было неглубокое.

>заменяют нулём 4 байта
не нулем, а нулевым БИТОМ, который в дереве кодирования будет, скорее всего, соответствовать наиболее часто встречающемуся БАЙТУ.



Страницы: 1 вся ветка

Форум: "Основная";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.47 MB
Время: 0.037 c
1-1081603595
Ilg
2004-04-10 17:26
2004.04.25
Максимальное количество строк в Memo


4-1077361547
Gas
2004-02-21 14:05
2004.04.25
Как определить, "занято" ли окно/приложение?


7-1077707737
Alex_DM
2004-02-25 14:15
2004.04.25
Где ослик IE прячет свой хвост?


3-1080729220
alexa777
2004-03-31 14:33
2004.04.25
Связанные таблицы


3-1080255402
Volodya_
2004-03-26 01:56
2004.04.25
locate





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский