uncompress (Bytef *dest, uLongf *destLen, const Bytef *source, uLong sourceLen)
zlib出現Z_BUF_ERROR的原因是輸出緩衝區不夠大,那麼zlib怎麼判斷輸出緩衝區,就是通過destLen參數來判斷的,這個destLen的用法很特別,它既用來表示你給輸出緩衝區分配了多大,又通知你它最終輸出的結果是多大,所以,在調用這個函數之前一定要把destLen賦值為dest的大小,而不能默認為0
對於lzma庫的函數調用也是一樣需要這樣做的。
compress 也是需要先給於初值!!否則會出錯 成功範例
char zipReturn_data[100 * 1024]; //100K for map buffer
uLong ucompSize = 2048 *2048;
uLong zipReturn_len = compressBound(ucompSize);
int iZipCode = compress( (Bytef *)zipReturn_data, (uLongf *)&zipReturn_len,(const Bytef *)pCellData, (uLong)ucompSize);
if(iZipCode!=Z_OK)
{
log("zip file %d\n",iZipCode);
}
沒有留言:
張貼留言