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檔案後再讀取出來生成乙個新的 結果如下 ...
MapReduce基本原理及應用
一 mapreduce模型簡介 mapreduce將複雜的 執行於大規模集群上的平行計算過程高度地抽象到了兩個函式 map和reduce。它採用 分而治之 策略,乙個儲存在分布式檔案系統中的大規模資料集,會被切分成許多獨立的分片 split 這些分片可以被多個map任務並行處理 1.map和redu...