二進位制陣列由3類物件組成:
1.**arraybuffer物件:**代表記憶體
中的一段二進位制資料,可以通過「檢視」進行操作。「檢視」部署了陣列介面,這意味著,可以用陣列的方法操作記憶體。
2.**typedarray檢視:**共包括9種型別的檢視
,比如uint8array(無符號8位整數)陣列檢視、int16array(16位整數)陣列檢視、float32array(32位浮點數)陣列檢視等。
3.**dateview檢視:**可以自定義復合格式的檢視
,比如第乙個位元組是unit8(無符號8位整數)、第二個和第三個位元組是init16(16位整數)等,此外還可以自定義節序。
arraybuffer物件
arraybuffer物件代表儲存二進位制資料的一段記憶體,他不能直接讀/寫
,只能通過檢視(typedarray檢視和dateview檢視)讀/寫,檢視的作用是以指定格式解讀二進位制資料。
typedarray檢視
arraybuffer物件作為記憶體區域可以存放多種型別的資料。同一段記憶體,不同資料有不同的解讀方式,這就叫作「檢視」。
arraybuffer有兩種檢視,一種是typedarray
檢視,另一種是arraybuffer檢視
。前者的陣列成員都是同乙個資料型別
,後者的陣列可以是不同的資料型別
。
typedarray檢視共有9種型別,每一種檢視都是一宗建構函式。
int8array:8位有符號整數,長度為1個位元組。
uint8array:8位無符號整數,長度為1個位元組。
int16array:16位有符號整數,長度為2個位元組。
uint16array:16位無符號整數,長度為2個位元組。
int32array:32位有符號整數,長度為4個位元組。
uint32array:32位無符號整數,長度為4個位元組。
float32array:32位浮點數,長度為4個位元組。
.float64array:64位浮點數,長度為8個位元組。
typedarray陣列的差異:
//建立乙個指向b的int16檢視,開始於位元組2,長度為2
var v3-=new int16array(b,2,2)
檢視建構函式接受3個引數:
dateview檢視
dateview檢視提供更多操作選項,而且支援設定位元組序。在設計的目的上,arraybuffer物件的各種typedarray檢視用於向網絡卡、音效卡之類的本級裝置傳送資料,所以使用本機的位元組序即可;而dateview檢視用於處理網路裝置傳來的資料,所以大端位元組序或小端位元組可以自行設定。
dateview例項有以下屬性,含義與arraybuffer例項的同名方法相同,
dateview例項提供8個方法讀取記憶體:
dateview例項提供8個方法寫入記憶體:
set方法接受兩個引數:第乙個引數是位元組序號,表示從哪個位元組開始寫入;第二個引數為寫入的資料。對於那些寫入兩個或兩個以上位元組的方法,需要指定第三個引數,false或undefined表示使用大端位元組序號寫入true表示使用小端位元組好寫入。
//在第1個位元組,以大端位元組寫入序寫入值為25的32位整數
dv.setint32(0,25,false);
二進位制陣列的應用
ajax
允許伺服器上返回二進位制資料,這是分兩種情況:如果明確知道返回的二進位制資料型別,可以把返回型別(responsetype)設定為arreybuffer;如果不知道,就設定為blod.
canvas
網頁canvas元素輸出的二進位制畫素資料就是typearray陣列。
fetch api
fetch api取回的資料就是arraybuffer物件。
file api
如果知道乙個檔案的二進位制資料型別,也可以將這個檔案讀取為arraybuffer物件。
ES6學習筆記 二進位制陣列(應用)
說實話自從做了前端之後,還沒怎麼用過二進位制陣列,看了es6入門之後才知道原來二進位制陣列的用處還不少。1 ajax xmlhttprequest第一版responsetype屬性預設為text。xmlhttprequest第二版xhr2允許伺服器返回二進位制資料,這時分成兩種情況 首先看下面的例子...
培訓ES6筆記
1 剩餘操作符 let rest function a,rest rest 1,2,3,4,5 傳入引數 let print function a,b,c print 1,2,3 print 1,2,3 var m2 math.max 8,9,4,1 可以替代concat var arr1 1,3 ...
ES6筆記 物件
依據阮一峰教程摘取的自己可能用到的特性 屬性的簡潔表示法 function f x,y 等同於 function f x,y f 1,2 object方法簡寫 const o 等同於 const o object.assign 可列舉物件的合併 同名屬性的合併 淺拷貝const target con...