Arraybuffer,Blob,Base64編碼

ArrayBuffer

ArrayBuffer對象表示原始的二進制數據緩衝區,即在內存中分配指定大小的二進制緩衝區(容器),用於存儲各類類型化數組的數據,是最基礎的原始數據容器,沒法直接讀取或寫入, 須要經過具體視圖來讀取或寫入,即TypedArray對象或DataView對象對內存大小進行讀取或寫入;css

blob

Blob(binary large object),二進制類文件大對象,是一個能夠存儲二進制文件的「容器」,HTML5中的Blob對象除了存放二進制數據外還能夠設置這個數據的MIME類型。File接口基於Blob,繼承了 blob 的功能並將其擴展使其支持用戶系統上的文件。數組

區別

  • ArrayBuffer的數據,是能夠按照字節去操做的,而Blob的只能做爲一個整的對象去處理。因此說,ArrayBuffer相比Blob更接近真實的二進制,更底層。
  • Blob和ArrayBuffer都能存儲二進制數據。Blob相對而言儲存的二進制數據大(如File文件對象)。
  • ArrayBuffer是原始的二進制數據緩衝區,不能設置MIME類型;Blob能夠儲存大量的二進制編碼格式的數據,能夠設置對象的MIME類型。

MIME 類型

MIME (Multipurpose Internet Mail Extensions) 是描述消息內容類型的因特網標準。服務器

MIME 消息能包含文本、圖像、音頻、視頻以及其餘應用程序專用的數據。網絡

Base64編碼

咱們知道,咱們所看到的網頁上的每個圖片,都是須要消耗一個 http 請求下載而來的(全部纔有了 csssprites 技術的應運而生,可是 csssprites 有自身的侷限性,下文會提到)。
沒錯,無論如何,圖片的下載始終都要向服務器發出請求,要是圖片的下載不用向服務器發出請求,而能夠隨着 HTML 的下載同時下載到本地那就太好了,而 base64 正好能解決這個問題。
雖然能直接顯示圖片,然而,與之同時付出的代價則是 CSS 文件體積的增大。編碼

<img src="data:image/gif;base64,R0lGODlhHAAmAKIHAKqqqsvLy0hISObm5vf394uLiwAAAP///yH5B…EoqQqJKAIBaQOVKHAXr3t7txgBjboSvB8EpLoFZywOAo3LFE5lYs/QW9LT1TRk1V7S2xYJADs=">

Base64編碼規則

Base64是網絡上最多見的用於傳輸8Bit字節碼的編碼方式之一,Base64就是一種基於64個可打印字符來表示二進制數據的方法。

  • ①.把3個字符變成4個字符。
  • ②每76個字符加一個換行符。
  • ③.最後的結束符也要處理。
轉碼過程例子:
    3*8=4*6
    內存1個字節佔8位
    轉前: s 1 3
    先轉成ascii:對應 115 49 51
    2進制: 01110011 00110001 00110011
    6個一組(4組) 011100110011000100110011
    而後纔有後面的 011100 110011 000100 110011
    而後計算機一個字節佔8位,不夠就自動補兩個高位0了
    因此有了高位補0
    科學計算器輸入 00011100 00110011 00000100 00110011
    獲得 28 51 4 51
    查對下照表 c z E z
相關文章
相關標籤/搜索