バイナリ配列ArayBuffer
3045 ワード
概要
インターフェース設計の本来の目的は、WebGLプロジェクトと関連があります.WebGLとは、ブラウザとグラフィックスカードとの間の通信インターフェースを指し、Javascriptとグラフィックスカードとの間の大量のデータ、リアルタイムのデータ交換を満たすために、彼らの間の通信はバイナリでなければならず、伝統的なテキストフォーマットではない. ArayBufferオブジェクトは、元のバイナリデータ を表す. TypedArayは、単純タイプのバイナリデータを読み書きするために使用される . DataViewは、複雑なタイプのバイナリデータを読み書きするために用いられる .
ブラウザを操作するAPIが知られています.バイナリ配列を使用したものがあります. File API XMLtpRequest Fetch API Canvas Websocket ArayBuffer対象
図は指定されたフォーマットでバイナリデータArayBufferを解読する役割を果たし、データを格納する連続メモリ空間を割り当てることができます.は、割り当てられたメモリ領域のバイト長 を返す.により、メモリ領域の一部を新たなArayBufferオブジェクト にコピーすることができます.静的方法isViewは、パラメータがArayBufferであるかどうかを示すブックレン値を返します. 構成関数のセットは、異なるデータフォーマット を表しています. Int 8 Aray 8ビット有符号len=1 Uint 8 Aray 8ビット符号なしlen=1 Unit 8 ClampedAray 8ビット符号なし整数、len=1、オーバーフロー処理が異なる Int 16 Aray 16ビット有符号len=2 Uint 16 Aray 16ビット符号なしlen=2 Int 32 Aray(buffer)32桁は符号len=4 があります. UnityAray;32ビット符号なしlen=4 Float 32 Aray 32ビット浮動小数点len=4 Float 64 Aray 64ビット浮動小数点len=8 構造方式 TypedAray(buffer、byteOffset、length?) TypedAray TypedAray TypedAray は、ビューの構造関数が開始位置と長さを指定できるので、同じセグメントのメモリにおいて、異なるタイプのデータ を順次保存することができる. DataViewビュー自体も構造関数であり、ArayBufferオブジェクトをパラメータとして受け入れ、ビューを生成する .大端バイト順読み出しは、小端バイト順読み出しとは異なる.デフォルトは、大端バイト順読み出しデータ です. dvd.getUint 16(1,true)//小端 dvd.getUint 16(3,false)/大端 バイナリ配列の適用
ajax、canvas、file、websocket、fetch
インターフェース設計の本来の目的は、WebGLプロジェクトと関連があります.WebGLとは、ブラウザとグラフィックスカードとの間の通信インターフェースを指し、Javascriptとグラフィックスカードとの間の大量のデータ、リアルタイムのデータ交換を満たすために、彼らの間の通信はバイナリでなければならず、伝統的なテキストフォーマットではない.
ブラウザを操作するAPIが知られています.バイナリ配列を使用したものがあります.
図は指定されたフォーマットでバイナリデータArayBufferを解読する役割を果たし、データを格納する連続メモリ空間を割り当てることができます.
var buf = new ArrayBuffer(32); //32
ArayBuffer.prototype.byteLengthvar buffer = new ArrayBuffer(32);
console.info(buffer.byteLength); //32
ArayBuffer.prototype.slice()var buffer = new Arraybuffer(8);
var newBuffer = buffer.slice(0,3); // ,
Araybouffer.isView()var buffer = new ArrayBuffer(8);
ArrayBuffer.isView(buffer); //false
var v = new Int32Array(buffer);
ArrayBuffer.isView(v); //true
TypedArayビューvar b = new ArrayBuffer(8);
var v1 = new Int32Array(b);
var v2 = new Unit8Array(b, 2);
var v3 = new Int16Array(b, 2, 2);
var abcd = new Float64Array(8);
abcd[0] = 10;
var typedArray = new Int8Array(new Unit8Array(8));
var typeArray = new Unit8Array([1,2,3,4,5]);
複合ビューvar buffer = new ArrayBuffer(24);
var idView = new Int32Array(buffer, 0, 1);
var nameVidw = new Int32Array(buffer, 4, 1);
var ageVidw = new Int32Array(buffer, 8, 1);
DataViewビュー DataView(ArrayBuffer buffer[, [, ]])
ajax、canvas、file、websocket、fetch
var canvas = document.getElmentById('myCanvas');
var ctx = canvas.getContext('2d');
var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height);
var uint8ClampedArray = imageData.data;
uint8ClampedArray , 8 , 0~255,
; 255, 255, 0 0