1. 程式人生 > >【基礎】Base64 編解碼淺析

【基礎】Base64 編解碼淺析

Base64 一般用於在 HTTP 協議下傳輸二進位制資料,由於 HTTP 協議是文字協議,所以在 HTTP 協議下傳輸二進位制資料需要將二進位制資料轉換為字元資料。

然而直接轉換是不行的,因為網路傳輸只能傳輸可列印字元。

什麼是可列印字元?

在 ASCII 碼中規定,0~31、128 這 33 個字元屬於控制字元,32~127 這 95 個字元屬於可列印字元,也就是說網路傳輸只能傳輸這 95 個字元,不在這個範圍內的字元無法傳輸,Base64 編碼後便可以傳輸其他字元。

對映表如下:

Base64 將 3 個位元組轉變為 4 個位元組,因此,編碼後的程式碼量(以位元組為單位)約比編碼前的程式碼量多了 1/3。

如果程式碼量正好是 3 的整數倍,那麼恰好多了 1/3。

當多出的程式碼量不是 3 的整數倍時,程式碼量除以 3 的餘數就是 2 或者 1。轉換的時候,結果不夠 6 位的用 0 來補上相應的位置,之後再在 6 位的前面補兩個 0。轉換完空出的結果就用就用 “=” 來補位,總之要保證最後編碼出來得位元組數是 4 的倍數。

示例:

refer: