После долгих и мучительных проб и ошибок с использованием сторонних архивов, я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, то понял что в этом вопросе я полный дилетант.
Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
13.04.04 08:47: Перенесено модератором из 'C/C++' — ПК
Здравствуйте, aleckstein, Вы писали:
A>После долгих и мучительных проб и ошибок с использованием сторонних архивов, я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, то понял что в этом вопросе я полный дилетант. A>Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
непонятно, в чем, собственно, состоит задача... а посмотреть, как это работает, можно здесь, например или поискать еще что-нибудь, в зависимоти от того, что конкретно нужно.
и солнце б утром не вставало, когда бы не было меня
Re: Собственный архиватор
От:
Аноним
Дата:
12.04.04 18:42
Оценка:
Здравствуйте, aleckstein, Вы писали:
A>После долгих и мучительных проб и ошибок с использованием сторонних архивов, я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, то понял что в этом вопросе я полный дилетант. A>Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
Написать свой архиватор не может быть проще, чем разобраться в существующих...
В чем твоя проблема?
Здравствуйте, aleckstein, Вы писали:
A>После долгих и мучительных проб и ошибок с использованием сторонних архивов, я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, то понял что в этом вопросе я полный дилетант. A>Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
Есть такая очень хорошая библиотека, называется zlib, которая реализует алгоритмы работы zip`а. Посмотри, что это такое и не парься сам .
Если хочешь могу дать пару классов обёрток для неё.
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Здравствуйте, Mr. None, Вы писали:
MN>Есть такая очень хорошая библиотека, называется zlib, которая реализует алгоритмы работы zip`а. Посмотри, что это такое и не парься сам . MN>Если хочешь могу дать пару классов обёрток для неё.
так я же ему уже дал ссылку на "обертки" и примеры использования, а с той странички ссылки ведут дальше, к создателям zlib... но ему такое не подходит: ему нужно, чтобы разжевали и в рот положили, и чтобы все сразу...
Здравствуйте, ntuser, Вы писали:
N>Здравствуйте, Mr. None, Вы писали:
MN>>Есть такая очень хорошая библиотека, называется zlib, которая реализует алгоритмы работы zip`а. Посмотри, что это такое и не парься сам . MN>>Если хочешь могу дать пару классов обёрток для неё.
N>так я же ему уже дал ссылку на "обертки" и примеры использования, а с той странички ссылки ведут дальше, к создателям zlib... но ему такое не подходит: ему нужно, чтобы разжевали и в рот положили, и чтобы все сразу...
Опа... проглядел .
Но с другой стороны моя обёртка несколько проще — там только два метода у класса: Compress и Extract.. может как раз пойдёт
Компьютер сделает всё, что вы ему скажете, но это может сильно отличаться от того, что вы имели в виду.
Здравствуйте, aleckstein, Вы писали:
A>После долгих и мучительных проб и ошибок с использованием сторонних архивов, я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, то понял что в этом вопросе я полный дилетант. A>Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
Если не обязательно наличие разархиватора, просто поксорь все байты — любой файл тогда сожмется одного (!) байта
A>После долгих и мучительных проб и ошибок с использованием сторонних архивов, A>я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, A>то понял что в этом вопросе я полный дилетант. A>Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
Не вопрос, на самом деле. Жми сначала хафманом (для скорости можешь использовать
предварительно посчитанные словари), потом LZW / LZSS. Получится похуже чем у рара, но в
целом неплохо.
Re[2]: Собственный архиватор
От:
Аноним
Дата:
08.06.04 22:45
Оценка:
Здравствуйте, dmz, Вы писали:
A>>После долгих и мучительных проб и ошибок с использованием сторонних архивов, A>>я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, A>>то понял что в этом вопросе я полный дилетант. A>>Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
dmz>Не вопрос, на самом деле. Жми сначала хафманом (для скорости можешь использовать dmz>предварительно посчитанные словари), потом LZW / LZSS. Получится похуже чем у рара, но в dmz>целом неплохо.
Ты вообще соображаешь что говоришь ? ты думаешь скорость дюже улучшится используя "предварительно посчитанные словари" ?... а что с данными после хаффмана станет в курсах ? ты бред на выходе получишь который никогда LZSS не сожмёт !
прежде чем советовать убедись что знаешь что либо кроме терминов ...
Ответ прост: самое нетрудное сжать используя LZSS находя повторения с помощтю хэшей и на выходе полностью или частиччно данные жать статическим хаффменом ...
Результат: хорошо помучавшись можно сделать качество на уровне WinZIP но скорость раза в два будет хуже чем у последнего ... хотя опять же можно ещё помучаться ... и может будет а-ля WinZIP но навряд ли лучше ...
В завершение: а чем вас aleckstein собственно не устраивают сторонние архиваторы ?
Попробую "углубить" задачу, может немного не относящуюся к этой. Есть некоторый девай (мобильный), который получает поток оцифрованных данных, и было бы хорошо эти данные сжимать. Величина сжатия не самый важный параметр главной скорость т.к. девайс мобильный и быстродействие его небольшое.
Какие будут предложения.
Здравствуйте, aleckstein, Вы писали:
A>После долгих и мучительных проб и ошибок с использованием сторонних архивов, я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, то понял что в этом вопросе я полный дилетант. A>Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
Кто бы меня научил так выводы делать...
... << RSDN@Home 1.1.3 beta 2 >>
Re: Собственный архиватор
От:
Аноним
Дата:
09.06.04 13:25
Оценка:
Здравствуйте, aleckstein, Вы писали:
A>После долгих и мучительных проб и ошибок с использованием сторонних архивов, я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, то понял что в этом вопросе я полный дилетант. A>Подскажите, пожалуйста, где можно почитать что-нибудь на эту тему.
Паковка:
int compress2(unsigned char* outbuffer, usigned long* out_len, unsigned char* inbuffer, usigned long in_len, int quality);
/*
outbuffer - результирующий буфер (то, куда кладем сжатое)
out_len - длина результирующего буфера не менее in_len * (in_len / 1000) + 12
inbuffer - исходный буфер (то, что сжимаем)
in_len - длина исходного буфера
quality - качество сжатия: 0-9; 0 - без сжатия, 1 - наибыстрейшее, 9 - наилучшее, -1 - по умолчанию;
return:
out_len - длина результата в результирующем буфере, которую надо запомнить в своем формате файла для передачи uncompress()
Z_OK - без ошибок
Z_MEM_ERROR - нехватает памяти
Z_BUF_ERROR - кончился результирующий буфер*/
Распаковка:
int uncompress(unsigned char* outbuffer, usigned long *out_len, unsigned char* inbuffer, usigned long in_len);
/*
outbuffer - результирующий буфер (то, куда кладем распакованное)
out_len - длина результирующего буфера, должна быть не менее размера результата,
например запоминаться в твоем файле при использовании compress2, и передаваться сюда
inbuffer - исходный буфер (то, что разжимаем)
in_len - длина исходного буфера
return:
out_len - длина результата в результирующем буфере
Z_OK - без ошибок
Z_MEM_ERROR - нехватает памяти
Z_BUF_ERROR - кончился результирующий буфер
Z_DATA_ERROR - входные данные повреждены*/
Здравствуйте, aleckstein, Вы писали:
A>После долгих и мучительных проб и ошибок с использованием сторонних архивов, я понял что проще всего написать собственный архиватор, но когда я взялся за это дело, то понял что в этом вопросе я полный дилетант.
Если ты полный дилетант, то как ты смог прийти к выводу, что проще всего написать собственный архиватор?