- (, ). .
JavaScript, , .
. :
ArrayBuffer,Uint8Array,DataView,Blob,File.
JavaScript , . , , .
ArrayBuffer .
:
let buffer = new ArrayBuffer(16); // 16
alert(buffer.byteLength); // 16
16 .
ArrayBuffer . ArrayBuffer Array:
- , .
- , .
- ,
buffer[index].
ArrayBuffer . ? , .
ArrayBuffer .
. , ArrayBuffer.
:
Uint8ArrayArrayBuffer0 255 ( 8 , ). 8- .Uint16Array2 0 65535. 16- .Uint32Array4 0 4294967295. 32- .Float64Array85.0x10-3241.8x10308.
, 16 ArrayBuffer 16 8 (2 ), 4 (4 ), 2 (8 ).
ArrayBuffer , .
, - :
let buffer = new ArrayBuffer(16); // 16
let view = new Uint32Array(buffer); // 32-
alert(Uint32Array.BYTES_PER_ELEMENT); // 4
alert(view.length); // 4,
alert(view.byteLength); // 16,
//
view[0] = 123456;
//
for(let num of view) {
alert(num); // 123456, 0, 0, 0 ( 4 )
}
TypedArray
(Uint8Array, Uint32Array ) TypedArray. .
, TypedArray, , ArrayBuffer: Int8Array, Uint8Array .
new TypedArray - new Int8Array, new Uint8Array .
: .
(Int8Array Float64Array, ) - .
5 :
new TypedArray(buffer, [byteOffset], [length]);
new TypedArray(object);
new TypedArray(typedArray);
new TypedArray(length);
new TypedArray();
-
ArrayBuffer, . .:
byteOffset( 0)length( )buffer. -
Array- .:
let arr = new Uint8Array([0, 1, 2, 3]); alert( arr.length ); // 4, alert( arr[1] ); // 1, 4 (8- ) -
TypedArray: . , .let arr16 = new Uint16Array([1, 1000]); let arr8 = new Uint8Array(arr16); alert( arr8[0] ); // 1 alert( arr8[1] ); // 232, 1000, 8 1000 ( ) -
length.lengthTypedArray.BYTES_PER_ELEMENT:let arr = new Uint16Array(4); // 4 alert( Uint16Array.BYTES_PER_ELEMENT ); // 2 alert( arr.byteLength ); // 8 ( ) -
.
TypedArray , ArrayBuffer. ArrayBuffer, ( ArrayBuffer ).
ArrayBuffer TypedArray :
bufferArrayBuffer.byteLengthArrayBuffer.
, :
let arr8 = new Uint8Array([0, 1, 2, 3]);
//
let arr16 = new Uint16Array(arr8.buffer);
:
Uint8Array,Uint16Array,Uint32Array8, 16 32 .Uint8ClampedArray8- , ( ).
Int8Array,Int16Array,Int32Array( ).Float32Array,Float64Array32 64 .
int8 , Int8Array, JavaScript int int8.
, , Int8Array , -- ArrayBuffer.
, ? , .
, 256 Uint8Array. 256 100000000 (9 ), Uint8Array 8 , 0 255.
( ) 8 , .
.
257 100000001 (9 ), 8 , 1:
, 28.
:
let uint8array = new Uint8Array(16);
let num = 256;
alert(num.toString(2)); // 100000000 ( )
uint8array[0] = 256;
uint8array[1] = 257;
alert(uint8array[0]); // 0
alert(uint8array[1]); // 1
Uint8ClampedArray , . 255 , 255 0 . .
TypedArray
TypedArray Array, .
map, slice, find, reduce .
, :
-
splice. , , -- . . -
concat.
2 :
arr.set(fromArr, [offset]),offset( 0)fromArrarr.arr.subarray([begin, end])beginend( ).slice( ), .
, , .
DataView
DataView ArrayBuffer. - - .
- . . i-
arr[i]. -
DataView.getUint8(i).getUint16(i). , .
:
new DataView(buffer, [byteOffset], [byteLength])
bufferArrayBuffer.DataView. .byteOffset( 0).byteLength(buffer).
, :
// 4 , 255
let buffer = new Uint8Array([255, 255, 255, 255]).buffer;
let dataView = new DataView(buffer);
// 8- 0
alert( dataView.getUint8(0) ); // 255
// 16- 0, 2 , 65535
alert( dataView.getUint16(0) ); // 65535 ( 16- )
// 32- 0
alert( dataView.getUint32(0) ); // 4294967295 ( 32- )
dataView.setUint32(0, 0); // 4- , 0
DataView , . , (16- , 32- ), DataView .
ArrayBuffer , .
ArrayBuffer .
-
TypedArray:Uint8Array,Uint16Array,Uint32Array8, 16 32 .Uint8ClampedArray8- , .Int8Array,Int16Array,Int32Array( ).Float32Array,Float64Array32 64 .
-
DataView,getUint8(offset).
, ArrayBuffer . , .buffer .
, :
ArrayBufferView.BufferSource,ArrayBufferArrayBufferView.
. BufferSource - ArrayBuffer .
:
<code>,<pre>, 10 (plnkr, jsbin, codepen)