Главная страница
    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.46 MB
Время: 0.038 c
14-1080643685
ИМХО
2004-03-30 14:48
2004.04.25
Вопрос про окулистов (и не только про них)


1-1081489079
Riant
2004-04-09 09:37
2004.04.25
Excel в Delphi


7-1077998713
ZeBriD
2004-02-28 23:05
2004.04.25
XP и спящий режим


3-1080327973
Gambit
2004-03-26 22:06
2004.04.25
Синхронизацыя 2 таблиц paradox


3-1080589165
Yozh_Programmer
2004-03-29 23:39
2004.04.25
Запись массива в бинари в blob поле в БД в MSACCESS





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский