base64是基於64個字元進行轉換的,因為2的6次方正好為64,所以6bit就可以表示出64個字元,因此在轉換的過程中以6bit表示乙個字元。
原理:
3x8=4x6,核心是這個公式
base64的編碼都是按字串長度,以每3個8bit的字元為一組
針對每組,首先獲取每個字元的ascii編碼值
將ascii編碼轉換成8bit的二進位制,得到一組3*8=24bit的位元組
再將這24bit劃分為4個6bit的位元組,並在每個6bit的位元組前面都填兩個高位0,得到4個8bit的位元組
將這4個8bit的位元組轉換成10進製,對照base64編碼表,得到對應編碼後的字元
ascii表
base64編碼表
案例
w e n
ascii: 119 101 110
8bit: 01110111 01100101 01101110
6bit: 011101 110110 010101 101110
十進位制: 29 54 21 46
base64: d 2 v u
所以 "wen" ---- > d2vu
j i a n g
ascii: 106 105 97 110 103
8bit: 01101010 01101001 01100001 01101110 01100111
6bit: 011010 100110 100101 100001 011011 100110 011100 異常
十進位制: 26 38 37 33 27 38 28
base64: a m l h b m c =
所以 "jiang" ---- > amlhbmc=
注意:base64是四個字元為一組,不夠的補=
工具**:漢字轉base64這裡需要注意,漢字本身可以有多種編碼,比如進製轉換
base64轉換工具
轉base64
gb2312、utf-8、gbk
等等,每一種編碼的base6
4對應值都不一樣。下面的例子以utf-8
為例
嚴
的utf-8
為e4b8a5
,寫成二進位制就是三位元組的11100100 10111000 10100101,然後按照上面的規則轉換得到base64
編碼為:5lil
所以,漢字嚴(utf-8編碼)的base64值就是5lil
從上面英語字母或者漢字轉換為base64的來看,就是先轉換為對應的編碼的二進位制,然後在進行轉換
補充內容
data:image/png;base64,ivborw0kggoaaaansuheugaaaaeaaaakcayaaabidfamaaaa....
這是這是data uri scheme
目的是將一些小資料,直接嵌入到網頁中,而不用在引用外部
在上面data
表示取得資料的協定名稱,image/png
是資料型別名稱,base64
是資料的編碼方法,逗號後面就是這個image/png檔案base64編碼後的資料
data uri scheme支援的型別有:
BASE64編碼原理解析
1.每個字元按照ascii編碼對應乙個8bit,以3字元為一組 2.3 8 24,分成4份,每份6bit,在每份高位新增00,重新合成乙個4份8bit資料 3.新的4份8bit資料換算成10進製,得到4個數字 4.根據下面的base64編碼表,得到對應的新的字元 jascii 8374 748bit...
base64編碼原理解析
一.base64編碼由來 為什麼會有base64編碼呢?因為有些網路傳送渠道並不支援所有的位元組,例如傳統的郵件只支援可見字元的傳送,像ascii碼的控制字元就不能通過郵件傳送。這樣用途就受到了很大的限制,比如二進位製流的每個位元組不可能全部是可見字元,所以就傳送不了。最好的方法就是在不改變傳統協議...
BASE64 編碼原理
unit ubase64 編碼原理 將3個位元組轉換成4個位元組 3 x 8 24 4x6 先讀入3個位元組,每讀乙個位元組,左移8位,再右移四次,每次6位,這樣就有4個 位元組了。解碼原理 將4個位元組轉換成3個位元組,先讀入4個6位 用或運算 每次左 移6位,再右移3次,每次8位,這樣就還原了。...