📜  表示八位字节流 - Javascript (1)

📅  最后修改于: 2023-12-03 15:41:32.820000             🧑  作者: Mango

以字节流表示八位 - Javascript

在Javascript中,我们可以使用ArrayBufferTypedArray来表示字节流。这种模式在像数据包解析和WebSockets这样的应用程序中特别有用。

ArrayBuffer

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;
TypedArray

除了使用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开发中不可或缺的一部分。使用ArrayBufferTypedArray,我们可以轻松地访问和操作字节流。