base64
是網絡上最常見的用於傳輸8Bit字節代碼的編碼方式之一,它的目的是用ASCII中定義的可見字符去表示任意的二進制數據。之所以要這樣做,是因爲計算機中很多數據是隻能通過可見字符去傳輸的(比如我們的網站網址,比如一些面向字符的網絡協議如SMTP等),但是這些情景有時又需要去傳輸二進制數據。基於這樣的需要,誕生了Base64.
簡單來講,Base64就是用下列總計64個字符:
- A-Z
- a-z
- 0-9
- +
- /
去表示二進制數據。二進制數據以字節爲組,一個字節8bit存在256個狀態,而一個Base64字符只有64個狀態。機智的人們於是規定,用每4個Base64字符去表示3個二進制字節,因爲:
64 * 64 * 64 * 64 = 256 * 256 * 256
因此,Base64字符串的長度必然是4的整數倍。此外,由於二進制的字節數不一定是3的整數倍,所以Base64字符串在結尾是可能有空的。這些空的狀態,Base64引入第65個字符去表示:
=
這也是爲什麼Base64很多都是以=或==結尾的。但是注意,也存在不以=或==結尾的Base64,只要編碼的二進制字節數恰好被3給整除。
總結:一般情況下,一個合法的Base64,有着以下特徵:
- 字符串的長度爲4的整數倍。
- 字符串的符號取值只能在A-Z, a-z, 0-9, +, /, =共計65個字符中,且=如果出現就必須在結尾出現。