在電腦和網路開發中,我們經常需要在不同的二進位表示格式之間轉換。十六進位(Hexadecimal,簡稱Hex)和Base64是兩種最常用的二進位資料文字表示方式,各有其適用場景:Hex方便人類逐位元組閱讀除錯,Base64適合在文字通訊協定中傳輸二進位資料,開發者經常需要在兩者之間轉換。
十六進位使用0-9和A-F共16個字元表示資料,每個位元組對應兩個十六進位字元(00到FF),一個位元組正好是兩位十六進位數。這種表示方式非常直觀——兩個字元一個位元組,很容易對齊查看,所以擷取封包工具(Wireshark、Charles)、十六進位編輯器、除錯器、通訊協定文件都習慣用Hex展示二進位資料,方便開發者定位位元組偏移和欄位值。
Base64是一種用64個可列印ASCII字元(A-Z、a-z、0-9、+、/,加上=作為填充)表示任意二進位資料的編碼方式。它的主要作用是讓二進位資料可以安全地透過只能處理文字的通訊協定傳輸——比如JSON裡不能直接放原始二進位位元組,HTTP Header值不能包含非列印字元,Email內文不能直接帶附件——把二進位編碼成Base64文字就解決了這個問題,代價是編碼後體積增加約33%(每3位元組編碼為4個字元)。
為什麼不直接在介面裡用Hex傳輸二進位?當然也可以,但Base64比Hex效率高一些:Hex每位元組用2個字元表示,編碼效率是50%(1位元組→2字元);Base64每3位元組用4個字元表示,編碼效率是75%。所以同樣的二進位資料用Base64表示更短,在文字傳輸場景更常用;但Hex更直觀便於人工閱讀分析,所以擷取封包除錯用Hex,介面傳輸用Base64,兩者之間的轉換就成了開發者常見需求。
本工具的轉換完全是位元組層面的純轉碼,不涉及任何文字編碼(UTF-8、Big5等)假設:Hex字串直接解析為位元組陣列,位元組陣列直接編碼為Base64;反過來Base64直接解碼為位元組陣列,位元組陣列直接輸出為Hex字串。這一點很重要——普通的「字串Base64編碼」會涉及文字編碼轉換,但Hex↔Base64是純位元組表示之間的轉換,結果是確定唯一的,不會有亂碼問題。
工具支援彈性的輸入格式是考慮到實際使用場景:Wireshark預設輸出的Hex就是每個位元組之間空白分隔,很多文件裡的Hex會帶0x前綴,複製貼上時經常帶換行。自動去除空白和0x前綴可以省去手動清理的麻煩,直接貼上就能轉換,大幅提升除錯效率。
大小寫選擇也是實用功能:不同規範和系統對Hex大小寫偏好不同——Unix系工具和很多開源專案習慣用小寫(a-f),Windows和某些企業規範習慣用大寫(A-F),密碼學領域有時要求大寫。工具在Base64轉Hex時提供大小寫切換,不需要手動轉大小寫。
純本機處理是安全和速度的保證:編碼轉換本質是簡單的數學運算,不需要任何服務端計算,在瀏覽器本機用JavaScript處理速度極快(微秒級),而且敏感資料(金鑰、簽章、未公開的通訊協定資料)不會離開你的電腦,不存在網路傳輸外洩風險。即使在內網隔離、離線環境下也能正常使用。