透過 MCP 連接 →

輸入計算

數學公式

廣告

結果

解碼後文字
Man
解碼位元組數 3
輸入字元數(不含空白) 4
填充字元數 0

什麼是 Base64 解碼器?

Base64 是一種編碼方式,使用 64 個可列印的 ASCII 字元(A–Z、a–z、0–9、+ 與 /)來表示二進位資料。它常被用來把圖片內嵌到 HTML 中、在 JSON 或網址裡傳遞資料,以及為電子郵件附件進行編碼。這個解碼器則執行相反的動作——把 Base64 字串還原回它原本所代表的純文字。

使用方式

將你的 Base64 字串貼上或輸入到輸入框中,然後送出。工具會移除所有空白字元、解碼後顯示還原出的文字,同時列出解碼後的位元組數、輸入的字元數,以及出現了幾個填充字元('=')。如果輸入內容含有 Base64 字母集以外的字元,畫面就會顯示「無效」訊息。

公式說明

每個 Base64 字元可編碼 6 個位元的資料,因此 4 個 Base64 字元帶有 \(4 \times 6 = 24\) 個位元,正好能整齊地重新分組成三個 8 位元的位元組。當原始資料的長度不是 3 的倍數時,就會在結尾補上一或兩個 '=' 填充字元,讓編碼後的字串長度永遠是 4 的倍數。在解碼過程中,這些填充字元會被去除,多餘的位元也會被捨棄。

$$\text{Bytes} = \left\lfloor \frac{6 \times \text{Base64 chars (no padding)}}{8} \right\rfloor$$
每個 6 位元的四個 Base64 字元重組為三個 8 位元組
四個 Base64 字元攜帶 24 位元,可重組為三個解碼位元組。

實際範例

以 Base64 字串 SGk= 為例。各字元對應的數值為 S=18、G=6、k=36,而 '=' 則是填充字元。轉成二進位:\(010010\ 000110\ 100100\) → 共 24 個位元,但結尾的填充代表只有 2 個位元組是有效的:\(01001000\)(72 = 'H')與 \(01101001\)(105 = 'i')。最終結果就是 Hi

展示 Base64 字串經位元轉換為純文字的流程
解碼器將 Base64 字串還原為原始純文字。

Base64 字母表參考

標準 Base64 (RFC 4648) 將每個 6 位元值 (0–63) 映射到 64 個可列印 ASCII 字元中的一個。解碼器讀取每個字元,在此表格中查詢其 6 位元索引,串連這些位元,並將其重新分組為 8 位元位元組。下表列出了完整的字母表以及分配給每個字元的索引。

索引 字元 索引 字元 索引 字元 索引 字元
0 A 16 Q 32 g 48 w
1 B 17 R 33 h 49 x
2 C 18 S 34 i 50 y
3 D 19 T 35 j 51 z
4 E 20 U 36 k 52 0
5 F 21 V 37 l 53 1
6 G 22 W 38 m 54 2
7 H 23 X 39 n 55 3
8 I 24 Y 40 o 56 4
9 J 25 Z 41 p 57 5
10 K 26 a 42 q 58 6
11 L 27 b 43 r 59 7
12 M 28 c 44 s 60 8
13 N 29 d 45 t 61 9
14 O 30 e 46 u 62 +
15 P 31 f 47 v 63 /

= (等號) 是第 65 個符號,不是數據字元。它是編碼字符串末尾使用的填充標記,使總長度始終是 4 個字元的倍數。一個= 表示最後的 4 字元組編碼 2 個位元組;兩個== 表示它編碼 1 個位元組。解碼器會丟棄填充及其隱含的多餘零位元。

更多解碼示例

每個 Base64 字元貢獻 6 位元。四個字元 (24 位元) 精確解碼為 3 個位元組;部分組使用填充,以便解碼器知道要保留多少個位元組。位元組計數遵循 \(\text{位元組} = \left\lfloor \frac{6 \times n}{8} \right\rfloor\),其中 \(n\) 是實際 (非填充) 字元的數量。

示例 1 — 無填充:"TWFu" → "Man"

  1. 索引:T=19, W=22, F=5, u=46。
  2. 6 位元組:010011 010110 000101 101110
  3. 重新分組為位元組:01001101 01100001 01101110 = 77, 97, 110。
  4. ASCII 77, 97, 110 = M, a, n。當 \(n=4\) 時:\(\lfloor 24/8 \rfloor = 3\) 個位元組 — Man

示例 2 — 一個 '=' 填充:"SGVsbG8=" → "Hello"

  1. 去掉填充:7 個真實字元 S,G,V,s,b,G,8。
  2. 索引:S=18, G=6, V=21, s=44, b=27, G=6, 8=60。
  3. 位元:010010 000110 010101 101100 011011 000110 111100 (填充組的尾部 2 位元是零填料,已丟棄)。
  4. 位元組:01001000 01100101 01101100 01101100 01101111 = 72, 101, 108, 108, 111 = H, e, l, l, o
  5. 當 \(n=7\) 時:\(\lfloor 42/8 \rfloor = 5\) 個位元組 — Hello

示例 3 — 兩個 '==' 填充:"aGk="... 和 "TQ==" → "M"

  1. 去掉填充:2 個真實字元 T, Q。
  2. 索引:T=19, Q=16。
  3. 位元:010011 010000;只保留前 8 位元,其餘 4 位元是零填料。
  4. 位元組:01001101 = 77 = M
  5. 當 \(n=2\) 時:\(\lfloor 12/8 \rfloor = 1\) 個位元組 — M

若要反向操作並從文字產生這些字符串,請使用 Base64 編碼器

重要術語

Base64 字母表
固定的 64 個可列印字元集合 (A–Z, a–z, 0–9, + 和 /),用於將二進制數據表示為文字。每個字元代表從 0 到 63 的 6 位元值。
填充 ('=')
追加在編碼字符串末尾的等號,使其長度是 4 個字元的倍數。它不帶數據;一個 '=' 標記一個 2 位元組的最終組,'==' 標記一個 1 位元組的最終組。
六位組 (6 位元)
一組 6 位元 — 單個 Base64 字元編碼的單位。四個六位組 (24 位元) 與三個八位組完全對齊。
八位組 / 位元組 (8 位元)
8 位元單位,是解碼數據的一個位元組的標準大小。Base64 解碼將六位組重新分組為八位組,二進制到文字轉換器也可以逐位說明。
空白符去除
在解碼前移除空格、製表符和換行符。許多系統在長 Base64 中插入換行符 (例如 PEM 憑證、電子郵件 MIME);健壯的解碼器會忽略此空白符,而不是將其視為數據。
URL 安全 Base64
一種變體 (RFC 4648 §5),用 - 替換 +,用 _ 替換 /,使字符串在 URL 和檔案名中安全。填充通常也被省略。在使用標準解碼器之前,將這些字元轉換回 + 和 /;對於周圍的 URL 本身,請參閱 URL 編碼 / 解碼計算機

常見問題

我的資料會被傳送到別的地方嗎?解碼邏輯會在伺服器端執行以產生結果,但不會儲存任何輸入內容。請避免貼上機密資訊。

為什麼位元組數不能被 4 整除?位元組數指的是解碼後的輸出位元組,而非輸入字元數。每 4 個輸入字元最多會轉換成 3 個輸出位元組。

填充字元代表什麼意思?一個 '=' 表示最後一組產生了 2 個位元組;兩個 '=' 表示產生了 1 個位元組;沒有填充字元則表示資料長度原本就是 3 的倍數。

最後更新: