Base64編碼,是我們程式開發中經常使用到的編碼方法。它是一種基于用64個可列印字元來表示二進制資料的表示方法。它通常用作存儲、傳輸一些二進制資料編碼方法。它其實隻是定義用可列印字元傳輸内容一種方法,并不會産生新的字元集。
Base64實作轉換原理
它是用64個可列印字元表示二進制所有資料方法。由于26等于64,是以可以用每6個位元為一個單元,對應某個可列印字元。我們知道三個位元組有24個位元,就可以剛好對應于4個Base64單元,即3個位元組需要用4個Base64的可列印字元來表示。在Base64中的可列印字元包括字母A-Z、a-z、數字0-9 ,這樣共有62個字元,此外兩個可列印符号在不同的系統中一般有所不同。但是,我們經常所說的Base64另外2個字元是:“+/”。這64個字元,所對應表如下。
![]()
Base64編碼轉換原理
轉換的時候,将三個byte的資料,先後放入一個24bit的緩沖區中,先來的byte占高位。資料不足3byte的話,于緩沖區中剩下的bit用0補足。然後,每次取出6個bit,按照其值選擇
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/
中的字元作為編碼後的輸出。不斷進行,直到全部輸入資料轉換完成。
如果最後剩下兩個輸入資料,在編碼結果後加1個“=”;如果最後剩下一個輸入資料,編碼結果後加2個“=”;如果沒有剩下任何資料,就什麼都不要加,這樣才可以保證資料還原的正确性。
編碼後的資料比原始資料略長,為原來的4/3。無論什麼樣的字元都會全部被編碼,是以不像Quoted-printable 編碼,還保留部分可列印字元。是以,它的可讀性不如Quoted-printable編碼!
M的Ascii碼是77,前六位對應值為19,對應base64字元是T,如此類推。其它字元編碼就可以自動轉換得到。
不是剛好是3個位元組的情況: