Base64基本原理

2021-10-12 06:55:49 字數 1433 閱讀 2125

base64是一種基於64個可列印字元來表示二進位制資料的編碼方式,是從二進位制資料到字元的過程。

原則上,計算機中所有內容都是二進位制形式儲存的,所以所有內容(包括文字、影音、等)都可以用base64來表示。

base64編碼之所以稱為base64,是因為其使用64個字元來對任意資料進行編碼,同理有base32、base16編碼。標準base64編碼使用的64個字元為:

有點特殊的是最後兩個字元,因對最後兩個字元的選擇不同,base64編碼又有很多變種,比如用於編碼url的base64 url編碼。

base64編碼本質上是一種將二進位制資料轉成文字資料的方案。對於非二進位制資料,是先將其轉換成二進位制形式,然後每連續6位元(2的6次方=64)計算其十進位制值,根據該值在上面的索引表中找到對應的字元,最終得到乙個文字字串。

假設我們要對 hello! 進行base64編碼,按照ascii表,其轉換過程如下圖所示:

可知 hello! 的base64編碼結果為 s**sbg8h,每3個原始字元經base64編碼成4個字元。那麼,當原始字串長度不能被3整除時,怎麼辦呢?

以 hello!! 為例,其轉換過程為:

hello!! base64編碼的結果為 s**sbg8hiqaa。可見,不能被3整除時會採用來來補0的方式來完成編碼。

需要注意的是:標準base64編碼通常用 = 字元來替換最後的 a,即編碼結果為 s**sbg8hiq==。因為 = 字元並不在base64編碼索引表中,其意義在於結束符號,在base64解碼時遇到 = 時即可知道乙個base64編碼字串結束。

就前端而言,對於一些簡單的,為了減少外部資源載入,降低頁面載入時間,可以採用base64將編碼成字串,直接內嵌到頁面中。這種內嵌方式的實現,得益於大部分瀏覽器對data uri scheme特性的支援,該特性通常會在css設定背景時用到,其格式為:

background:url(data:檔案型別;編碼方式,編碼後的檔案內容);

也可通過img標籤嵌入:

下面說下具體使用方法(以icon圖示為例):

將得到的字串複製到你的前端**中使用(例如background:url(字串))

一般適用於比較小、色彩層次單一的(如icon圖示),不要試圖用於色彩豐富的較大,儘管能夠實現展現,但由於編碼後的字串非常大,會明顯增大html/css檔案的大小,影響載入速度。

Base64基本原理及簡單應用

base64是一種基於64個可列印字元來表示二進位制資料的編碼方式,是從二進位制資料到字元的過程。原則上,計算機中所有內容都是二進位制形式儲存的,所以所有內容 包括文字 影音 等 都可以用base64來表示。base64編碼之所以稱為base64,是因為其使用64個字元來對任意資料進行編碼,同理有b...

Base64編碼運用與基本原理

編碼說白了就是按照一定規則對資料進行轉換,工作原理有點類似於查字典,base64編碼 叫base64的原因是因為其使用64個字元來對任意資料進行編碼 可以用來將或者其他檔案的二進位制資料轉換成字串形式,以下 是將乙個通過base64編碼成字串,將字串寫入txt檔案後再讀取出來生成乙個新的 結果如下 ...

BASE64 編碼原理

unit ubase64 編碼原理 將3個位元組轉換成4個位元組 3 x 8 24 4x6 先讀入3個位元組,每讀乙個位元組,左移8位,再右移四次,每次6位,這樣就有4個 位元組了。解碼原理 將4個位元組轉換成3個位元組,先讀入4個6位 用或運算 每次左 移6位,再右移3次,每次8位,這樣就還原了。...