zlib & crc32
От: Kingofastellarwar Украина  
Дата: 08.04.11 19:15
Оценка:
был у меня класс зипер, который добвлял в архив файл одним вызовом

int crc = crc32(0, (const Bytef *)data, size);
zipOpenNewFileInZip3(Zip, path, &zipfi, null, 0, null, 0, null, Z_DEFLATED, Z_DEFAULT_COMPRESSION, 0, 15, 8, Z_DEFAULT_STRATEGY, null, crc);
zipWriteInFileInZip(Zip, data, size)

т.е. я считал зачем-то crc32 и писал веcь файл одним вызовом zipWriteInFileInZip

а теперь переделал этот класс, чтобы можно было писать блоками
соотв. я считалку црц убрал — ибо откуда я знаю crc если запись будет идти неизвестными блоками

zipOpenNewFileInZip(Zip, path, &zipfi, null, 0, null, 0, null, Z_DEFLATED, Z_DEFAULT_COMPRESSION)

но появилась такая фигня, вроде как арзив правильный, но проги-архиваторы ругаются на некоторые файлы, говоря что у них этот самый црц не правильый.
хотя если самому загрузить этот архив, то там все файлы читаются без проблем.

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


как разрулить?
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re: zlib & crc32
От: kpcb Россия  
Дата: 08.04.11 19:42
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>а теперь переделал этот класс, чтобы можно было писать блоками

K>соотв. я считалку црц убрал — ибо откуда я знаю crc если запись будет идти неизвестными блоками

K>как разрулить?


в boost-е есть считалка crc32 для последовательности блоков данных
Re[2]: zlib & crc32
От: Kingofastellarwar Украина  
Дата: 08.04.11 19:57
Оценка:
Здравствуйте, kpcb, Вы писали:

K>в boost-е есть считалка crc32 для последовательности блоков данных



так это тоже не подходит, потому что нет способа менять црц по ходу записи или после неё. ну по крайней мере я не знаю такого способа.
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re[3]: zlib & crc32
От: Kingofastellarwar Украина  
Дата: 09.04.11 14:13
Оценка:
а блин я понял , там при записи нельзя NULL передавть
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
Re: zlib & crc32
От: Alexander G Украина  
Дата: 10.04.11 15:27
Оценка:
Здравствуйте, Kingofastellarwar, Вы писали:

K>был у меня класс зипер, который добвлял в архив файл одним вызовом


K>int crc = crc32(0, (const Bytef *)data, size);

K>zipOpenNewFileInZip3(Zip, path, &zipfi, null, 0, null, 0, null, Z_DEFLATED, Z_DEFAULT_COMPRESSION, 0, 15, 8, Z_DEFAULT_STRATEGY, null, crc);
K>zipWriteInFileInZip(Zip, data, size)

Думаю, дело в выделенном, чтобы создать совместимый архив, надо задать -15. Или использовать zipOpenNewFileInZip, чтобы вообще не задавать этот параметр самому.
Русский военный корабль идёт ко дну!
Re[2]: zlib & crc32
От: Kingofastellarwar Украина  
Дата: 10.04.11 16:56
Оценка:
Здравствуйте, Alexander G, Вы писали:

AG>Думаю, дело в выделенном, чтобы создать совместимый архив, надо задать -15. Или использовать zipOpenNewFileInZip, чтобы вообще не задавать этот параметр самому.


не
zipWriteInFileInZip(Zip, /*сюда нельзя случайно передать нулл*/, size)
потому что функция вернет Z_OK но при этом сбросит црц
Я изъездил эту страну вдоль и поперек, общался с умнейшими людьми и я могу вам ручаться в том, что обработка данных является лишь причудой, мода на которую продержится не более года. (с) Эксперт, авторитет и профессионал из 1957 г.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.