Base64編碼轉換原理

Base64編碼,是咱們程序開發中常常使用到的編碼方法。它是一種基於用64個可打印字符來表示二進制數據的表示方法。它一般用做存儲、傳輸一些二進制數據編碼方法。它其實只是定義用可打印字符傳輸內容一種方法,並不會產生新的字符集。html

Base64實現轉換原理

它是用64個可打印字符表示二進制全部數據方法。因爲26等於64,因此能夠用每6個位元爲一個單元,對應某個可打印字符。咱們知道三個字節有24個位元,就能夠恰好對應於4個Base64單元,即3個字節須要用4個Base64的可打印字符來表示。在Base64中的可打印字符包括字母A-Z、a-z、數字0-9 ,這樣共有62個字符,此外兩個可打印符號在不一樣的系統中通常有所不一樣。可是,咱們常常所說的Base64另外2個字符是:「+/」。這64個字符,所對應表以下。編碼

 

轉換的時候,將三個byte的數據,前後放入一個24bit的緩衝區中,先來的byte佔高位。數據不足3byte的話,於緩衝區中剩下的bit用0補足。而後,每次取出6個bit,按照其值選擇
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
中的字符做爲編碼後的輸出。不斷進行,直到所有輸入數據轉換完成。.net

若是最後剩下兩個輸入數據,在編碼結果後加1個「=」;若是最後剩下一個輸入數據,編碼結果後加2個「=」;若是沒有剩下任何數據,就什麼都不要加,這樣才能夠保證資料還原的正確性。3d

編碼後的數據比原始數據略長,爲原來的4/3。不管什麼樣的字符都會所有被編碼,所以不像Quoted-printable 編碼,還保留部分可打印字符。因此,它的可讀性不如Quoted-printable編碼!code

 


M的Ascii碼是77,前六位對應值爲19,對應base64字符是T,如此類推。其它字符編碼就能夠自動轉換獲得。htm

不是恰好是3個字節的狀況:blog


相關文章
相關標籤/搜索