演算法位元組對齊
發布時間: 2023-08-08 05:41:24
A. 求7z演算法的原理,詳細
7z演算法的原理:
簡單地說也就是把文件中的重復數據用更簡潔的方法表示,例如一個文件中有1000個字母A,那麼這將佔用1KB的數據空間,如果用壓縮演算法就可以用1000A來表示,那麼它只需要5個位元組的數據空間,壓縮比達到了200倍。
7z簡介:7z 是一種主流高效的壓縮格式,它擁有極高的壓縮比。在計算機科學中,7z是一種可以使用多種壓縮演算法進行數據壓縮的檔案格式。該格式最初被7-Zip實現並採用,但是這種檔案格式是公有的,並且7-Zip軟體本身亦在GNU寬通用公共許可證 (GNU LGPL)協議下開放源代碼。目前LZMA軟體開發工具包的最新版本為V9.34。7z格式的MIME類型為application/x-7z-compressed。
B. 關於讀取圖片時候行位元組數的演算法LineBytes=(width*8+31)/32*4的疑問
該演算法為:LineBytes = (width * bitCount + 31) / 32 * 4
bitCount為點陣圖位寬,32位BMP,位寬為32、24位BMP位寬為23、256色點陣圖位寬為8、等等。
這是一種對齊演算法,對於BMP等點陣圖來說,要求是4位元組對齊,即每行位元組數必須為4的整數倍。
因為8bit等於1Byte,同時滿足以4位元組為對齊單位向下對齊,所以可以得:
LineBytes = (width * bitCount / 8 + 3) / 4 * 4
對於位寬不足8的點陣圖,有可能是多個像素才佔用1Byte,所以應該將「/ 8」移出括弧,進一步得:
LineBytes = (width * bitCount + 31) / 32 * 4
熱點內容