Base64編碼,是我們程序開發中經常使用到的編碼方法。它是一種基於用64個可打印字符來表示二進制數據的表示方法。它通常用作存儲、傳輸一些二進制數據編碼方法。它其實只是定義用可打印字符傳輸內容一種方法,並不會產生新的字符集。
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+/
如果最后剩下兩個輸入數據,在編碼結果后加1個“=”;如果最后剩下一個輸入數據,編碼結果后加2個“=”;如果沒有剩下任何數據,就什么都不要加,這樣才可以保證資料還原的正確性。
編碼后的數據比原始數據略長,為原來的4/3。無論什么樣的字符都會全部被編碼,因此不像Quoted-printable 編碼,還保留部分可打印字符。所以,它的可讀性不如Quoted-printable編碼!
M的Ascii碼是77,前六位對應值為19,對應base64字符是T,如此類推。其它字符編碼就可以自動轉換得到。
不是剛好是3個字節的情況: