「這張圖片要怎麼傳送才好?」

在進行前端開發時,您是否曾有過這樣的念頭:
「這張小圖示,好像沒必要特地為了它發送一個圖片檔案請求……有沒有辦法能把它當作文字,直接嵌入程式碼裡呢?」

Base64 轉換的原理與工程師必知的活用場景

又或者是,當您試圖透過 API 交換二進位資料 (Binary Data),卻在 JSON 中看到滿滿的「亂碼」而感到絕望。
在這種時刻,我們的救星就是名為 Base64 的魔法翻譯術。

二進位與文字之間的「橋樑」

電腦深處由「0 與 1」組成的二進位資料,原本是無法通過電子郵件或 JSON 這種「文字世界」的。如果強行傳輸,資料會在途中損毀。

因此,將二進位資料替換成如 A-Z 或 0-9 等「任何人都能讀取的 64 種字元」。這就是 Base64 編碼的本質。這就像是將易碎的玻璃藝品(二進位)裝入堅固的紙箱(文字)中封箱寄出的意象。

工程師必知的「包裝成本」

不過,這種「包裝」也有點副作用。
轉換為 Base64 後,資料體積會膨脹到原始大小的 約 1.3 倍

如果僅僅因為「方便」,就把高畫質的大圖全部轉成 Base64 並嵌入 HTML 中,網頁讀取速度就會變得像烏龜一樣慢。

「小圖示用 Base64 快速搞定」、「大照片則作為檔案聰明處理」。
當您能學會區分這兩者,您的程式碼將會變得更加洗練。

在 DevToolKits 中「快速」轉換

「這段 Base64 本來是什麼?」、「我想把這段字串改成 Base58」。
這種時候,請試試本站的 Base64/58/32 轉換工具

只需點選一個按鈕,即可完成複雜的編碼與解碼。讓處理二進位資料時能感到更親近、更有趣。請讓我們協助您的開發流程變得稍微輕快一些。

結語

Base64 就像是數位世界的「共通語言」。
透過理解其原理並接受它的特性(會稍微變胖一點喔!),資料串接的煩惱將會大幅減少。來吧,今天也讓我們輕快地撰寫程式碼吧!

常見問題

Base64 是加密嗎?

不是。Base64 是把二進位資料以文字表示的編碼方式,不需要金鑰也不需要任何祕密。任何人都能立刻還原,因此把密碼或個資轉成 Base64 完全沒有保護效果。想要隱藏內容請使用加密,想要防止竄改請使用簽章。

結尾的 = 可以拿掉嗎?

要看用途。= 是為了湊足 4 個字元一組的填充字元,在標準 Base64 中是必要的。不過 URL-safe 的 base64url 經常省略填充,JWT 也採用不含填充的形式。請先確認解碼端是否接受沒有填充的輸入,再決定要不要拿掉。

轉成 Base64 之後容量會變大嗎?

會。每 3 個位元組會表示成 4 個字元,因此大約增加 33%,若再加上換行會更大一些。把圖片以 data URI 內嵌到 HTML 時檔案比預期還大,原因就在這裡。較大的檔案建議直接傳輸,不要用 Base64 包起來。