[英]How does DEFLATE(zlib) determine block size?
我想知道DEFLATE如何確定塊大小(我的意思是,在zlib中。)
在RFC 1591中,存在以下解釋:“當壓縮器確定啟動具有新樹的新塊時,或者當塊大小填滿壓縮器的塊緩沖區時,壓縮器將終止塊。”
這對我來說還不夠。 我想知道結束當前塊需要什么條件並詳細啟動新塊。
DEFLATE如何決定新鮮的發辮是否有用? 壓縮器塊緩沖區的大小是多少?
當當前符號緩沖區填滿(默認為16,383個符號)或輸入數據完成(請求Z_FINISH
)時,zlib的deflate結束塊。 zlib中的deflate不會試圖判斷何時更早結束塊可能是有益的。
在這種情況下,一個符號是一個文字,或任何長度的一個匹配。
符號緩沖區的大小由deflateInit2()
的memLevel
參數決定。 memLevel
為8,這是deflateInit()
使用的默認值,產生16,383個符號。 memLevel
可以是1到9,其中符號緩沖區大小為(1 << (memLevel + 6)) - 1
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.