維基百科的定義:

是一種基於 64 個可列印字元(具體的字元見底部的 base64 碼錶)來表示二進位數據的表示方法。由於2的6次方等於64,所以每6個位元為一個單元,對應某個可列印字元。三個位元組有24個位元,對應於4個Base64單元,即3個位元組需要用4個可列印字元來表示。它可用來作為電子郵件的傳輸編碼。

原理:

下面是將 "test" 字元串轉換為 base64 編碼的過程:

編碼 "test" 字元串的過程

最後如果補了 4 個 0 則在結尾加 2 個 =,如果補了 2 個 0 則在結尾加 1 個 =,如果剛好則不加 =

注意:

你在測試的時候可能發現,你用系統命令和用代碼對同一個字元串做 base64 編碼,但結果卻不一樣:

echo base64_encode(test); // 用 PHP 的 base64_encode 輸出: dGVzdA==

// 但在命令窗口 通過 echo "test" | base64 命令卻輸出:dGVzdAo=

那是因為 linux shell 使用 echo 時會自動添加一個換行

echo base64_encode(test.PHP_EOL); // 加上一個換行符就輸出:dGVzdAo= 了

//或通過 echo -n "test" | base64 命令也能輸出:dGVzdA==

另外 base64 編碼用 4 個字元表示原來的 3 個字元(3 * 8 = 4 * 6),最後可能還要補 『=』,所以編碼後的長度至少是原來的 4/3 。

應用:

// 將圖片編碼後傳輸
$image = base64_encode(file_get_contents(/Users/xxx/Downloads/3f.jpg));

<img src="data:image/jpeg;base64, $image" alt= "" />

備註:

ASCII_碼錶?

baike.baidu.com圖標

base64 碼錶 -- 來自百度百科

推薦閱讀:
相关文章