提取 LZH 檔案

無限制 作業。檔案大小可達 2.5GB。免費,永遠免費。

私密與安全

一切都在您的瀏覽器中進行。您的檔案絕不接觸我們的伺服器。

極速

無需上傳,無需等待。在您拖放檔案的瞬間即可轉換。

完全免費

無需帳戶。無隱藏費用。無檔案大小限制花招。

什麼是 LZH 格式?

LZH 封存檔

LZH 是一種無損資料壓縮檔案格式,以 Lempel-Ziv-Huffman 演算法命名,這是其所依據的演算法。它最初於 1987 年由 Yoshizaki Haruyasu 發布,作為對 Abraham Lempel 和 Jacob Ziv 在 1970 年代後期開發的早期 LZ77 和 LZ78 壓縮格式的改進。LZH 提供了更有效的壓縮比,同時仍允許快速解壓縮。

LZH 中使用的核心壓縮演算法是基於字典的,利用先前看到的資料來更緊湊地編碼未來的資料。編碼器維護最近處理資料的滑動視窗緩衝區。當遇到新資料時,編碼器會在滑動視窗中搜尋最長的匹配序列。如果找到匹配,資料會編碼為對應匹配視窗位置和長度的參考,而不是原始資料。此參考通常比原始內容佔用更少的空間。

用作 LZH 基礎的 LZ77 有一個編碼迴圈,如下所示: 1. 在滑動視窗中搜尋與即將輸入的最長匹配 2. 輸出參考匹配的 (偏移量、長度) 對 3. 如果找不到匹配,則輸出一個文字位元組 4. 將視窗向前移動匹配長度

1986 年,Terry Welch 發布了一種改進的 LZW 演算法,改編自 LZ78 的工作。它使用字典中的索引號碼來達成比 LZ77 更高的密度。隔年,LZH 發布,結合了 LZ77 滑動字典方法,但在 LZ77 符號上加入 Huffman 編碼作為額外的步驟來改善壓縮比。

Huffman 編碼會將短位元組序列指定給頻繁使用的符號,將較長序列指定給罕見的符號。在 LZH 中,可能的符號是文字位元組、區塊結束標記和滑動視窗字典中的匹配參考。Huffman 編碼模型會根據每個資料區塊的符號頻率分佈,針對每個資料區塊單獨計算。更頻繁的匹配參考會指定較短的位元組碼。此熵編碼步驟會在與滑動視窗匹配後套用。

解壓縮會從輸入串流解析可變長度 Huffman 碼,將它們轉譯回文字位元組和匹配參考。參考會透過回顧已解碼資料的視窗緩衝區來解析,將匹配複製到輸出。視窗會在每個符號後向前滑動。解壓縮很快,因為不需要搜尋匹配。

LZH 檔案包含一系列區塊,每個區塊都使用此 LZ77+Huffman 模型獨立壓縮。分開的區塊允許隨機存取和錯誤復原。每個區塊都以一個標頭開始,其中儲存了解碼該區塊資料所需的 Huffman 編碼表。

標準 LZH 格式允許 13 位元滑動視窗大小,或 8,192 位元組。視窗通常在每個區塊開始時初始化為所有零位元組。不使用預設字典,只使用先前壓縮的資料。匹配參考的長度限制在最多 256 位元組。

Nelson H.F. Beebe 將 LZH 擴充為支援任意大的滑動視窗大小,並將其格式稱為 LZHXa。視窗大小限制為 2 的次方,其中 2^15 (32,768) 和 2^16 (65,536) 位元組很常見。增加視窗會改善壓縮,因為會搜尋更多歷史資料,但代價是編碼速度較慢且使用更多記憶體。

LZH 包含檢查碼來驗證資料完整性。每個區塊都以 16 位元 CRC 碼結束。多檔案檔案庫會為每個完整檔案儲存額外的 CRC。大多數實作都使用多項式 x^16 + x^15 + x^2 + 1 的 CRC-16,但有些使用 CRC-16-CCITT。

壓縮的 LZH 檔案通常使用 .lzh 檔案副檔名。此格式在日本採用最廣泛,在 1990 年代初期與 ZIP 和 ARJ 競爭時達到人氣高峰。一種稱為 LHA 的非正式標準應運而生,由流行的 LArc 和 LHarc 檔案庫使用。它增加了對註解、時間戳記、密碼和多檔案檔案庫的支援。

LZH 的主要優點是與 ZIP 相比,它的壓縮比更高,而且解壓縮速度快。然而,到了 1990 年代中期,ZIP 獲得了人氣,並取代了大多數其他格式。ZIP 快速被 Windows 採用為標準,加上跨平台程式庫和工具支援,導致它主導了無損壓縮市場。

如今,LZH 在日本和東亞以外很少使用。bzip2、LZMA 等新的壓縮格式提供了顯著更好的壓縮比。一些舊式應用程式可能仍會遇到 .lzh 檔案,但建議使用現代的 ZIP、7z 或 xz 來進行檔案歸檔。存在 lhasa 等開源工具來解壓縮舊的 .lzh 檔案。

總之,LZH 創新地結合了 Lempel-Ziv 字典編碼和 Huffman 位元組減少,在推出時達到了最先進的壓縮。它曾被簡短採用,特別是在日本,然後被 ZIP 標準取代。但在資料壓縮的歷史和現代檔案格式的發展中,它扮演了重要的角色。LZH 展示了滑動視窗字典和符號熵編碼等技術,這些技術仍然是我們有效壓縮資料的基礎。

檔案壓縮透過減少冗餘,讓相同的資訊佔用更少的位元。可壓縮的上限受資訊理論約束:對於無失真壓縮,上界是信源熵(參見香農的信源編碼定理以及他於 1948 年發表的《通信的數學理論》)。對於有失真壓縮,碼率與感知品質之間的權衡由率失真理論描述。

兩大支柱:建模與編碼

多數壓縮器分兩個階段。首先,模型會預測或揭露資料中的結構。接著,編碼器把這些預測轉成近乎最優的位元型態。經典的建模家族是 Lempel–Ziv:LZ77 (1977)及 LZ78 (1978) 會偵測重複子字串並輸出參照而非原始位元組。編碼面則由霍夫曼編碼(見原始論文1952)為較常出現的符號分配更短的碼字。算術編碼範圍編碼再進一步逼近熵極限,而現代的非對稱數值系統(ANS)則用查表方式取得相似壓縮率。

常見格式怎麼做

DEFLATE(被 gzipzlibZIP 採用)把 LZ77 和霍夫曼編碼結合。其規格完全公開:DEFLATERFC 1951、zlib 封裝RFC 1950以及 gzip 檔案格式RFC 1952。Gzip 針對串流設計並明確不提供隨機存取。PNG 影像則把 DEFLATE 規範為唯一的壓縮方式(視窗最多 32 KiB),詳見 PNG 規格「Compression method 0… deflate/inflate… at most 32768 bytes」W3C/ISO PNG 第二版

Zstandard (zstd): 針對高壓縮率與極快解壓而設計的通用壓縮器。格式記載於RFC 8878(以及HTML 鏡像)和 GitHub 上的參考規格文件。與 gzip 類似,基本框架並不追求隨機存取。zstd 的絕招是字典:從語料擷取的小樣本能大幅改善許多小型或相似檔案的壓縮(參閱python-zstandard 字典文件Nigel Tao 的示例)。各實作同時支援「非結構化」與「結構化」字典(討論)

Brotli: 為網頁內容(如 WOFF2 字體、HTTP)優化,結合靜態字典與類 DEFLATE 的 LZ+熵編碼核心。規格載於RFC 7932,文件同時指出滑動視窗為 2WBITS-16,WBITS 介於 [10, 24](1 KiB-16 B 至 16 MiB-16 B),並且不嘗試隨機存取。Brotli 常在網頁文字上優於 gzip,解碼也相當快速。

ZIP 容器: ZIP 是一種檔案封存格式,可存放使用多種壓縮法(deflate、store、zstd 等)的項目。權威規格是 PKWARE 的 APPNOTE(參見APPNOTE 入口托管副本以及美國國會圖書館的概覽ZIP File Format (PKWARE)/ZIP 6.3.3)。

常見問題解答

什麼是檔案壓縮?

檔案壓縮是一個減少檔案或檔案群大小的過程,通常用於節省儲存空間或加速網路傳輸。

檔案壓縮是如何運作的?

檔案壓縮運作原理,透過識別並移除數據中的冗餘資訊。它使用演算法將原始數據編碼在較小的空間裡。

檔案壓縮有什麼類型?

兩種主要的檔案壓縮類型是無失真及有失真壓縮。無失真壓縮可以完美地恢復原始檔案,然而有失真壓縮在一些資料品質的損失下能得到更大的壓縮程度。

請給出一個檔案壓縮工具的範例?

一個常見的檔案壓縮工具範例是WinZip,它支援多種壓縮格式包括ZIP與RAR。

檔案壓縮會影響檔案質量嗎?

在無失真壓縮中,質量保持不變。然而,在有失真壓縮中,可能會有顯著的質量下降,因為它刪除了一些較不重要的數據以便更大程度地減少檔案大小。

檔案壓縮安全嗎?

是的,相對於資料的完整性來說,檔案壓縮是安全的,尤其是無失真壓縮。然而,如同所有檔案,被壓縮的檔案也可能受到惡意軟體或病毒的攻擊,所以總是需要有專業的安全軟體以保護。

什麼類型的檔案可以壓縮?

幾乎所有種類的檔案都可以被壓縮,包括文字檔案、圖像、音訊、視頻和軟體檔案。然而,壓縮程度可以因檔案類型而有顯著的不同。

什麼是ZIP檔?

ZIP檔是一種使用無失真壓縮以減少一個或多個檔案大小的檔案格式。在ZIP檔中的多個檔案被有效地打包為單一的檔案,這也讓分享變得更加容易。

我可以壓縮一個已經壓縮過的檔案嗎?

技術上可行,儘管額外的大小減少可能非常小或甚至適得其反。壓縮一個已經壓縮過的檔案有時可能會增加其大小,原因在於壓縮演算法所增加的metadata。

我該如何解壓壓縮的檔案?

解壓壓縮的檔案,通常需要一個解壓縮或解zip的工具,像是WinZip或7-Zip。這些工具可以从壓縮格式中提取原始檔案。