我正在開發一個項目,其中如果我的磁盤出現問題,我會在使用ZLIB壓縮它之後將大塊內存發送到另一個磁盤。這個轉儲然後我打算下載並用於進一步的調試。這種壓縮和上傳是一次完成一塊 - 比如說1024K。ZLIB壓縮
這個問題是我需要輸出塊正好是1024K,然後才把它上傳到另一個磁盤上(除此之外,還會有標題和預告片以及這個塊大小是壓縮數據的大小),然後我可以輕鬆地解壓縮並使用它。我試着改變put_byte函數,一旦輸出緩衝區爲1024K,我可以將它發送到另一個磁盤,但這似乎不起作用。
我想過檢查Z_BUF_ERROR,然後發送它並重新啓動整個壓縮過程,但我不確定是否所有懸而未決的輸入/輸出都已刷新。
有一些其他的方式,我可以去這樣做 - 即確保當輸出緩衝器(壓縮數據大小)都只有1024K字節的數據包被髮送。
O/P? OP? IP?請定義。 –
O/P或OP =>存儲壓縮數據的輸出緩衝區IP或I/P =>存儲原始數據的輸入緩衝區。 – Zshn
如果你只是想將'deflate()'的輸出分解爲1K塊,那麼只需要在輸出爲1K的地方提供'deflate()',即'strm.avail.out = 1024;'。提供輸入到'deflate()'直到'strm.avail.out == 0'或者用完輸入。然後寫出該塊。 –