快速判斷字符串是不是base64編碼

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個字符中,且=如果出現就必須在結尾出現。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章