js实现byte数组
实现 Byte 数组的方法
在 JavaScript 中,可以通过多种方式创建和操作 Byte 数组(即二进制数据)。以下是几种常见的方法:
使用 ArrayBuffer 和 TypedArray
ArrayBuffer 是 JavaScript 中用于表示二进制数据的底层对象,而 TypedArray(如 Uint8Array)可以用于操作 ArrayBuffer 中的字节数据。
// 创建一个长度为 8 字节的 ArrayBuffer
const buffer = new ArrayBuffer(8);
// 使用 Uint8Array 操作字节数据
const byteArray = new Uint8Array(buffer);
// 填充字节数据
byteArray[0] = 0x01;
byteArray[1] = 0x02;
使用 DataView
DataView 提供了更灵活的方式来读写 ArrayBuffer 中的数据,支持多种数据类型(如 Uint8, Int16, Float32 等)。
const buffer = new ArrayBuffer(16);
const view = new DataView(buffer);
// 写入一个 8 位无符号整数
view.setUint8(0, 0xFF);
// 读取一个 8 位无符号整数
const value = view.getUint8(0);
使用 Node.js 的 Buffer
在 Node.js 环境中,可以直接使用 Buffer 类来处理二进制数据。
// 创建一个长度为 4 字节的 Buffer
const buffer = Buffer.alloc(4);
// 写入字节数据
buffer.writeUInt8(0x01, 0);
buffer.writeUInt8(0x02, 1);
// 读取字节数据
const byte = buffer.readUInt8(0);
从字符串或 Base64 转换
如果需要从字符串或 Base64 编码的数据生成 Byte 数组,可以使用以下方法:
// 从字符串生成 Byte 数组(UTF-8 编码)
const str = "Hello";
const encoder = new TextEncoder();
const byteArray = encoder.encode(str);
// 从 Base64 生成 Byte 数组
const base64 = "SGVsbG8=";
const binaryString = atob(base64);
const bytes = new Uint8Array(binaryString.length);
for (let i = 0; i < binaryString.length; i++) {
bytes[i] = binaryString.charCodeAt(i);
}
注意事项
- 在浏览器环境中,
ArrayBuffer和TypedArray是标准的 API。 - 在 Node.js 中,
Buffer是更常用的二进制数据处理方式。 - 如果需要处理大端序或小端序数据,可以使用
DataView的setInt16、setInt32等方法,并指定littleEndian参数。







