📅  最后修改于: 2023-12-03 15:41:32.820000             🧑  作者: Mango
在Javascript中,我们可以使用ArrayBuffer
和TypedArray
来表示字节流。这种模式在像数据包解析和WebSockets这样的应用程序中特别有用。
ArrayBuffer
是一个固定长度的缓冲区。我们可以通过将其分配给TypedArray
来访问其内容。可以通过以下方式创建一个长度为8个字节的缓冲区:
let buffer = new ArrayBuffer(8);
要访问缓冲区,我们需要使用一种TypedArray
。这里列出了一些可用的TypedArray
:
Int8Array
Uint8Array
Int16Array
Uint16Array
Int32Array
Uint32Array
Float32Array
Float64Array
这里创建一个Int8Array
类型的引用,从而创建缓冲区:
let int8View = new Int8Array(buffer);
我们可以通过类似数组的语法来访问缓冲区中的字节:
int8View[0] = 0xff;
int8View[1] = 0x00;
int8View[2] = 0xab;
int8View[3] = 0x98;
int8View[4] = 0x76;
int8View[5] = 0x54;
int8View[6] = 0x32;
int8View[7] = 0x10;
除了使用ArrayBuffer
,还可以使用以下TypedArray
:
Uint8ClampedArray
Int8Array
Uint8Array
Int16Array
Uint16Array
Int32Array
Uint32Array
BigInt64Array
BigUint64Array
Float32Array
Float64Array
这是一个例子,创建两个Uint8Array
以及将其合并成一个Uint16Array
:
let lowerUint8Array = new Uint8Array([0x34, 0x12]);
let upperUint8Array = new Uint8Array([0x78, 0x56]);
let uint16Array = new Uint16Array(lowerUint8Array.length + upperUint8Array.length);
uint16Array.set(lowerUint8Array, 0);
uint16Array.set(upperUint8Array, lowerUint8Array.length);
console.log(uint16Array);
输出结果为:
Uint16Array [ 4660, 30396 ]
字节流表示是Web开发中不可或缺的一部分。使用ArrayBuffer
和TypedArray
,我们可以轻松地访问和操作字节流。