编码方式 / Base 64
一、基本信息
1、一種編碼方式。
2、使用場景:
(1)某些老的路由器不支持 UTF-8,當中文字符的二進制流到路由器中時,路由器可能按照自己支持的編碼方式,例如:ascii 碼來解讀,可能解析出不可見字符,例如:回車、tab。容易導致路由器異常從而傳輸失敗。
(2)避免在 http 中傳輸二進制數據,因為不同的設備對二進制解讀是不同的。同樣,一些老的軟件、網絡協議也有類似的問題。
(3)網頁請求中,若網頁中存在圖片,一般瀏覽器的操作是獲取到基本的網頁數據之后,再次進行請求獲取里面圖片的數據,這樣就導致了網絡請求頻繁。為了解決這個問題,可以將網頁中圖片的二進制數據轉成 Base 64 ,嵌入到 html 中,一次即可傳至瀏覽器。
總之,Base64 編碼可以將所有的二進制串轉成可見的字符串,并且都落在 ascii 碼表中可見字符中,幾乎所有的系統都是支持 ascii 碼的,故使用 Base 64 編碼可以通過幾乎所有的設備的傳輸。Base 64 相當于一個萬能語言,各個生物(設備)都能看懂。
二、編碼表
Base64 編碼是通過 64 個字符來表示二進制數據,64 個字符表示二進制數據只能表示 6 位,所以他可以通過 4 個 Base64 的字符來表示 3 個字節,如下是 Base64 的字符編碼表。
| A | 16Q | 32g | 48w |
| B | 17R | 33h | 49x |
| C | 18S | 34i | 50y |
| D | 19T | 35j | 51z |
| E | 20U | 36k | 520 |
| F | 21V | 37i | 531 |
| G | 22W | 38m | 542 |
| H | 23X | 39n | 553 |
| I | 24Y | 40o | 564 |
| J | 25Z | 41p | 575 |
| K | 26a | 42q | 586 |
| L | 27b | 43r | 597 |
| M | 28c | 44s | 608 |
| N | 29d | 45t | 619 |
| O | 30e | 46u | 62+ |
| P | 31f | 47v | 63/ |
?三、編碼過程
如要表示字符串“China”?,先將各個字符轉換為二進制形式,也就是 01000011 01101000 01101001 01101110 01100001,先將字符串分成 2 組,每組 3 個字節,如下所示:
01000011 01101000 01101001 01101110 01100001? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(1)
第一組藍色以?6 bit 為單位從左向右進行分割,每小組 6 bit,左側補充 2 個0,使之為一個字節,結果如下:
00010000? 00110110? 00100001? 00101001
經過計算,該組的十進制值為?16.54.33.41,依照索引可以得出對應的 Base64 字符,為 Q.2.h.p。
同理可以得到第二組的分割結果為:
00011011? 00100110? 00000100
由于第三個小組本身不足 6 bit,故在小組右側補充 2 個 0。經過計算,該組的十進制值為 27.38,依照索引可以得出對應的 Base64 字符,為 b.m.E。
由于上述(1)號串,第二組應該為 3 個字節,結果只有兩個,故需要在 base 64 編碼最后添加 1 個 =,缺幾個字節就加幾個 = ,由于每組最多 3 個字節,故頂過有 2 個 = 。
四、解碼過程
解碼過程就是把 4 個字節還原成 3 個字節再根據“=”數量不同最終還原出二進制。
?
(SAW:Game Over!)
總結
以上是生活随笔為你收集整理的编码方式 / Base 64的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通信 / HTTP 详解
- 下一篇: 密码学 / 哈希算法