> 最大 | 效率 | 壓縮 <
// 透過 91 個可列印 ASCII 字元的 Base91 編碼,在文字通道中取得更高的空間使用效率
更高壓縮效率
與 Base64 等常見編碼相比,Base91 的體積膨脹約為 23%,在同樣資料量下可以產生更短的字串。
全為可列印字元
僅使用 91 個可列印 ASCII 字元,方便直接用於日誌、文字協定、終端輸出等需要人眼閱讀的情境。
節省頻寬與儲存
Base64 一般約 33% 的空間開銷,而 Base91 約為 23%,在大量 API 請求或集中式日誌中能長期累積可觀的節省。
>> 技術說明
Base91 的運作機制:
Base91 從 94 個可列印 ASCII 字元中擷取 91 個,並透過特殊演算法將每兩個輸出字元中塞入 13–14 位元,兼顧可讀性與壓縮效率。
範例:
"Hello" → >OwJh>A
為什麼選擇 Base91:
- >希望在文字通道上盡量縮小編碼後的長度
- >比 Base64(約 33% 開銷)更節省空間的替代方案
- >使用可列印 ASCII 字元,方便直接出現在日誌與 CLI 中
- >適合頻寬/儲存成本被嚴格控管的服務
- >提升 API 回應與訊息隊列負載的資訊密度
>> 常見問題
什麼是 Base91 編碼?
Base91 是一種將二進位資料轉換為文字的編碼方案,使用 91 個可列印 ASCII 字元,在壓縮效率上優於 Base64 等傳統編碼。
什麼情況下應該使用 Base91?
當你需要在 HTTP、日誌、訊息佇列等文字通道中盡量壓縮傳輸資料的大小時,Base91 可以在保持可讀性的前提下,提供更小的輸出。
Base91 與 Base64 的實際差異有多大?
Base64 一般會比原始資料增加約 33% 的長度,而 Base91 約為 23%。在長期累積的流量或大型日誌中,這樣的差異能帶來明顯的空間節省。
Base91 的實作與支援度如何?
雖然沒有 Base64 普及,但已有多種語言的實作可用,並在許多需要高度壓縮文字表示的專案中被採用。
// 對比
| 名稱 | bits/char | overhead |
|---|---|---|
| Base16 | 4 | 100% |
| Base32 | 5 | 60% |
| Base64 | 6 | 33.3% |
| Base85 | 6.41 | 24.8% |
| Base91 | 6.51 | 22.9% |
// 程式碼範例
Alphabet A-Z a-z 0-9 ! # $ % & ( ) * + , . / : ; < = > ? @ [ ] ^ _ ` { | } ~ "
Excluded - \ ' and space (3 of the 94 printable ASCII characters)
Bits log2(91) = 6.508 bits/char -> 8 / 6.508 = 1.229 (~23% overhead)
Python pip install base91 base91.encode(b'Hello')
JS npm i base91 base91.encode(...)
>> 更多問題
問:basE91 使用哪 91 個字元?
答:basE91 使用 94 個可列印 ASCII 字元(不含空格)中的 91 個:A–Z a–z 0–9 以及 ! # $ % & ( ) * + , . / : ; < = > ? @ [ ] ^ _ ` { | } ~ "。被排除的是 -、\ 和 '。雙引號 " 包含在內,在 JSON 或 shell 中需要跳脫。
問:為什麼 Base91 的開銷約為 23%?
答:共 91 個符號,每個字元攜帶 log₂(91) ≈ 6.508 位元。8 / 6.508 ≈ 1.229,即約 22.9% 的開銷。對比:Base32 為 60%,Base64 為 33%,Base85 為 25%。
問:什麼時候 Base91 比 Base64 更好?
答:只有在每個位元組都很寶貴時,例如嵌入式系統或受限協定。Base91 不是網址安全的,標準函式庫中沒有,支援也很少。日常使用 Base64 更合適。