Uint8Array

Baseline 广泛可用 *

此特性已相当成熟,可在许多设备和浏览器版本上使用。自 ⁨2015 年 7 月⁩以来,各浏览器均已提供此特性。

* 此特性的某些部分可能存在不同级别的支持。

Uint8Array 类型化数组表示一个 8 位无符号整数的数组。除非明确提供了初始化数据,否则其内容将初始化为 0。一旦创建,您就可以使用该对象的方法或标准数组索引语法(即方括号表示法)来引用数组中的元素。

Uint8Array 是隐藏的 TypedArray 类的子类。

描述

Uint8Array 是目前唯一一个比其他类型化数组拥有额外方法的 TypedArray 子类。由于它本身就是一个通用的字节数组,因此最适合处理任意二进制数据。它支持两套方法,用于将 Uint8Array 数据创建、序列化和修改为十六进制字符串和 base64 字符串。

构造函数

Uint8Array()

创建一个新的 Uint8Array 对象。

静态属性

也继承了其父类 TypedArray 的静态属性.

Uint8Array.BYTES_PER_ELEMENT

返回元素大小的数字值。对于 Uint8Array,其值为 1

静态方法

继承了其父类 TypedArray 的静态方法.

Uint8Array.fromBase64()

从 base64 编码的字符串创建新的 Uint8Array 对象。

Uint8Array.fromHex()

从十六进制编码的字符串创建新的 Uint8Array 对象。

实例属性

也继承了其父类 TypedArray 的实例属性.

这些属性定义在 Uint8Array.prototype 上,并由所有 Uint8Array 实例共享。

Uint8Array.prototype.BYTES_PER_ELEMENT

返回元素大小的数字值。对于 Uint8Array,其值为 1

Uint8Array.prototype.constructor

创建实例对象的构造函数。对于 Uint8Array 实例,初始值为 Uint8Array 构造函数。

实例方法

继承了其父类 TypedArray 的实例方法.

Uint8Array.prototype.setFromBase64()

使用 base64 编码字符串中的字节填充此 Uint8Array 对象,并返回一个指示已读取和写入字节数 Object。

Uint8Array.prototype.setFromHex()

使用十六进制编码字符串中的字节填充此 Uint8Array 对象,并返回一个指示已读取和写入字节数 Object。

Uint8Array.prototype.toBase64()

根据此 Uint8Array 对象中的数据返回 base64 编码的字符串。

Uint8Array.prototype.toHex()

根据此 Uint8Array 对象中的数据返回十六进制编码的字符串。

示例

创建 Uint8Array 的不同方法

js
// From a length
const uint8 = new Uint8Array(2);
uint8[0] = 42;
console.log(uint8[0]); // 42
console.log(uint8.length); // 2
console.log(uint8.BYTES_PER_ELEMENT); // 1

// From an array
const x = new Uint8Array([21, 31]);
console.log(x[1]); // 31

// From another TypedArray
const y = new Uint8Array(x);
console.log(y[0]); // 21

// From an ArrayBuffer
const buffer = new ArrayBuffer(8);
const z = new Uint8Array(buffer, 1, 4);
console.log(z.byteOffset); // 1

// From an iterable
const iterable = (function* () {
  yield* [1, 2, 3];
})();
const uint8FromIterable = new Uint8Array(iterable);
console.log(uint8FromIterable);
// Uint8Array [1, 2, 3]

规范

规范
ECMAScript® 2026 语言规范
# sec-typedarray-objects

浏览器兼容性

另见