漫畫:什麼是base64編碼

 

 

 

 

Base64和ASCII的區別

ASCII碼的範圍是0-127,其中0-31和127這33個字符屬於控制字符,剩下的32-126這95個字符屬於可打印字符,包含了數字、大小寫字母和常用符號等。他們與十進制的對應關係如下:

 

這裏面的某些字節在某些傳輸渠道中不支持, 比如郵件傳輸SMTP協議就不支持上面ASCII碼中的控制字符, 只能傳輸可打印的ASCII字符。另外當byte值>127時,就超出了ASCII的表示範圍,Base64的創建就是爲了解決此問題。

base64是一種編碼算法,Base64內的64是指64個字符【可打印字符】, 分別是 A-Z, a-z, 0-9, +, /它們與十進制的對應關係如下:

 

Base64採用6bit字符表達了原本的8bit字符,它可以將原本ACSII碼的控制字符以及ASCII碼之外的byte數字都轉換成可打印的64位字符。

 

Base64編碼原理

  • 1)將所有字符轉化爲ASCII碼;
  • 2)將ASCII碼轉化爲8位二進制;
  • 3)將二進制3個歸成一組(不足3個在後邊補0)共24位,再拆分成4組,每組6位;
  • 4)統一在6位二進制前補兩個0湊足8位;
  • 5)將補0後的二進制轉爲十進制;
  • 6)從Base64編碼表獲取十進制對應的Base64編碼;例如編碼Man:

 

字節數不爲3的倍數時的處理過程

如果要編碼的字節數不能被3整除,最後會多出1個或2個字節,那麼可以使用下面的方法進行處理:先使用0字節值在末尾補足,使其能夠被3整除,然後再進行base64的編碼。在編碼後的base64文本後加上一個或兩個'='號,代表補足的字節數。也就是說,當最後剩餘一個八位字節(一個byte)時,最後一個6位的base64字節塊有四位是0值,最後附加上兩個等號;如果最後剩餘兩個八位字節(2個byte)時,最後一個6位的base字節塊有兩位是0值,最後附加一個等號。 參考下表:

 

'A'base64編碼結果:'QQ =='

'BC'base64編碼結果:QKM=

 

 

 

 

喜歡的關注我吧!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章