若要將 Base64 轉換為十六進位,解碼器會將每個由四個字元組成的 Base64 群組還原為其原始的三位元組二進位資料,然後將這些資料格式化為六個十六進位字元,以表示完全相同的位元組值。具體來說,標準 Base64 會將三個 8 位元位元組(共 24 位元)以四個 6 位元字元表示,這些字元從一個 64 字元的字母表中選取;而十六進位則將每個獨立的 8 位元位元組以剛好兩個介於 00 到 ff 之間的 base-16 位數表示。這項轉換是對二進位資料的直接、可逆翻譯,並不會更動底層的位元組,這表示將一串符合規範且帶有填補字元的 Base64 轉換為小寫十六進位時,會產生與原始位元組序列完全一致的精確表示法。這個程序常被開發者用來檢查編碼後的承載資料、驗證加密雜湊值、解析序列化的網路通訊協定欄位,或對二進位測試 fixture 進行除錯。由於整個翻譯過程完全是數學運算,並不涉及任何如 UTF-8 或 ASCII 等文字編碼轉換,因此能確保原始的二進位數值完全不被更動。

理解 Base64 與十六進位編碼
對於初學者來說,處理原始的二進位資料可能會很困難,因為電腦是以一連串的 1 與 0 來儲存資訊。為了讓這些位元組對人類來說易於閱讀,並且能在基於文字的傳輸系統中安全傳遞,我們會使用編碼格式。Base64 與十六進位是將二進位資料表示為文字的兩種最受歡迎的方法。
Base64 會將每三個位元組編碼為四個可列印字元,藉此表示二進位資料,因此會使資料量增加。這個字母表由 64 個字元組成:大寫字母、小寫字母、數字、加號 (+) 和斜線 (/)。當最後一個群組僅有一個或兩個位元組時,會使用等號 (=) 作為填補字元以湊滿四個字元的群組。由於使用了更大的字母表,Base64 非常精簡。然而,人類難以直接閱讀它,也很難僅憑觀察字元就對應回各個獨立的位元組值。
十六進位(常簡稱為 hex)會將每個獨立的位元組以剛好兩個來自 16 字元字母表(0-9 與 a-f)的位數表示。由於每個位元組會直接對應到兩個十六進位字元,hex 在檢查二進位檔案、通訊協定欄位和加密雜湊值方面非常實用。如果您想了解這項翻譯過程中會發生哪些底層的位元位移,可以閱讀我們的指南:Base64 轉十六進位解析:位元組層級的逐步解說。
當您需要在這兩種格式之間轉換資料時,使用一個嚴格的工具能確保沒有任何位元組遺失或遭到修改。標準的 Base64 轉十六進位轉換器 能在 RFC 4648 Base64 與 Base16 十六進位之間轉換相同的位元組序列,而不執行任何中間的文字解碼。這表示您的原始位元組會維持原本的預期,完全不會因字元集假設而遭到損壞。
RFC 4648 測試向量與位元組對應表
網際網路工程任務小組 (IETF) 在 RFC 4648 中定義了這些編碼的標準。此規範明確規定了編碼器和解碼器必須遵循的行為,以維持不同程式語言和系統之間的一致性。為了驗證轉換工具是否 100% 準確,開發者會使用一組官方的測試向量。
下表顯示了這些標準測試向量。它說明了原始 ASCII 文字字元如何對應到它們精確的十六進位位元組值,以及其對應的標準 Base64 表示法:
| 原始文字 | 十六進位位元組 (小寫) | 標準 Base64 輸出 |
|---|---|---|
| (空) | (空) | (空) |
| f | 66 | Zg== |
| fo | 666f | Zm8= |
| foo | 666f6f | Zm9v |
| foob | 666f6f62 | Zm9vYg== |
| fooba | 666f6f6261 | Zm9vYmE= |
| foobar | 666f6f626172 | Zm9vYmFy |
若要了解此數學運算如何逐步運作,讓我們來看一個將單一字元 "f" 轉換為 Base64 的單一運算範例:
首先,我們找出 "f" 的十六進位值,也就是 66。以二進位表示時,十六進位的位元組 66 表示為二進位的 01100110。
接著,Base64 會將二進位資料分割成 6 位元的群組。由於我們只有 8 位元,因此分割方式如下:
- 群組 1:前 6 位元為 011001,在十進位中等於 25。
- 群組 2:剩餘的 2 位元為 10。我們必須將此群組填補四個零以構成完整的 6 位元區塊:100000,在十進位中等於 32。
現在,我們在標準的 RFC 4648 Base64 字母表對照表中查找這些十進位數值:
- 索引 25 對應到字元 Z。
- 索引 32 對應到字元 g。
由於標準的 Base64 區塊必須始終由四個字元組成,而我們對應單一輸入位元組僅得到兩個字元 (Zg),因此我們附加兩個填補字元 (==) 以填滿剩餘的位置。最終的標準結果為 Zg==。
在線上將 Base64 轉換為十六進位
如果您有一個 Base64 字串並需要其精確的十六進位表示法,您可以完全在網頁瀏覽器中執行此操作。此線上轉換器會使用數值位元組陣列在本地端執行所有運算,而非仰賴瀏覽器的文字強制轉換,這表示您的輸入資料絕不會被上傳到任何外部伺服器。
- 選擇 Base64 轉十六進位 或 十六進位轉 Base64,並確認準確的來源編碼設定檔。
- 貼上不包含空白的標準帶填補 Base64,或是每個位元組剛好兩位數、沒有前綴或分隔符的十六進位字串。
- 執行轉換,驗證預期的位元組長度與前置零,然後複製準確的結果。
此工具支援最多 500,000 個解碼後位元組的輸入,這對於處理一般的加密金鑰、雜湊值或編碼後的設定檔綽綽有餘。由於輸出內容會直接複製到您的剪貼簿,不會附加任何額外標籤或說明文字,您可以將乾淨的結果直接貼到終端機或程式碼編輯器中。
嚴格驗證與常見錯誤
許多初學者在將 Base64 轉換為十六進位時會遇到問題,因為不同的系統會使用略有差異的編碼變體。我們的轉換器採用嚴格的驗證引擎,以確保您的資料格式完全正確。這種嚴格性可以避免可能在後續流程中損壞資料的隱性錯誤。
一個常見的問題是省略填補字元。標準 Base64 要求輸入長度必須是四的倍數,並在必要時於結尾使用等號 (=)。某些現代的網頁 API 會省略此填補字元,或使用一種稱為 "base64url" 的變體,該變體會將加號 (+) 和斜線 (/) 字元替換為連字號 (-) 和底線 (_)。如果您嘗試將這些非標準變體輸入嚴格的解碼器,它將會拒絕它們。這是一項刻意的設計選擇;猜測編碼設定檔很容易掩蓋底層的資料截斷錯誤。若要了解如何應對這些驗證限制,請閱讀我們的指南:如何正確地將 Base64 轉換為十六進位。
同樣地,十六進位解析器要求輸入為一串乾淨、連續的小寫或大寫位元組序列,且每個位元組剛好兩個字元。它不接受 0x 之類的前綴、空格、逗號或底線。像 0f 這樣的值會被視為單一位元組而接受,但獨立的 f 是不完整的,因此將被拒絕。這項嚴格的邊界要求能確保前置零絕不會遺失,且最終的位元組計數維持絕對精確。
最後,請記住 Base64 與十六進位都不是加密形式。它們只是原始二進位資料的簡單、可逆表示法。如果您轉換的是敏感性憑證、私密金鑰或密碼,該資料對於任何能解碼它的人來說仍然是完全可見的。請務必將您的敏感性承載資料遠離共用的剪貼簿、不受信任的記錄檔或公開的瀏覽器工作階段,以確保您的資訊安全無虞。