讀取文件的過(guò)程需要二進(jìn)制,但是JavaScript中沒(méi)有明確的二進(jìn)制字節(jié)位的概念爪模,類(lèi)型化的數(shù)組概念就是二進(jìn)制傳輸過(guò)程的接口沃琅。
var buffer=new ArrayBuffer(4);//長(zhǎng)度為四個(gè)字節(jié)
var a=new Uint8Array(buffer);
a[0]=01;
a[1]=02;
a[2]=03;
a[3]=04;
定義了4個(gè)字節(jié)長(zhǎng)度的buffer,內(nèi)容為[0x01,0x02,0x03,0x04]
var b=new Uint16Array(buffer);
console.log(b);//513,1027
輸出結(jié)果我剛開(kāi)始真的是百思不得其解究抓,首先uint的方法主要用于arraybuffer中的內(nèi)容不能在瀏覽器界面顯示使用猾担,每個(gè)字節(jié)的長(zhǎng)度8位,然后定義16位的b刺下,那么讀取的過(guò)程就是a[3]a[2],a[1]a[0]绑嘹,讀取的結(jié)果用十進(jìn)制的形式表示,所以也就有了接下來(lái)的各種類(lèi)型轉(zhuǎn)換
new Uint8Array;//8位無(wú)符號(hào)的整數(shù)
new Uint16Array;//16位無(wú)符號(hào)的整數(shù)
new Uint32Array;//32位無(wú)符號(hào)的整數(shù)
new Int8Array;//8位有符號(hào)的整數(shù)
new Int16Array;//16位有符號(hào)的整數(shù)
new Int32Array;//32位有符號(hào)的整數(shù)
但是在轉(zhuǎn)換16位或者32位時(shí)橘茉,控制臺(tái)總是報(bào)錯(cuò)工腋,但是8位不會(huì)報(bào)錯(cuò),舉個(gè)例子畅卓,假設(shè)buffer的length為105擅腰,就是105個(gè)字節(jié),8位的讀就是一次讀取一個(gè)字節(jié)翁潘,16位一次讀兩個(gè)字節(jié)趁冈,讀到最后時(shí)候就剩一個(gè)字節(jié),就報(bào)錯(cuò)了拜马,32位也是如此箱歧。所以我一般都會(huì)選擇8位。