返回

如何在 JavaScript 中处理二进制数据

前端

1. 从二进制数据创建 JavaScript 对象

有两种方法可以从二进制数据创建 JavaScript 对象:

  • 使用 Buffer

Buffer 类是 Node.js 中的一个内置类,用于处理二进制数据。它提供了一系列方法来操作二进制数据,包括:

  • Buffer.from():从字符串、数组或另一个缓冲区创建缓冲区。

  • Buffer.alloc():创建一个指定大小的新缓冲区。

  • Buffer.concat():将多个缓冲区连接成一个新的缓冲区。

  • Buffer.slice():从缓冲区中提取一个子缓冲区。

  • Buffer.write():向缓冲区中写入数据。

  • Buffer.toString():将缓冲区转换为字符串。

  • 使用 ArrayBuffer

ArrayBuffer 类是 Web API 中的一个内置类,用于处理二进制数据。它提供了一系列方法来操作二进制数据,包括:

  • ArrayBuffer.from():从字符串、数组或另一个缓冲区创建数组缓冲区。
  • ArrayBuffer.alloc():创建一个指定大小的新数组缓冲区。
  • ArrayBuffer.concat():将多个数组缓冲区连接成一个新的数组缓冲区。
  • ArrayBuffer.slice():从数组缓冲区中提取一个子数组缓冲区。

2. 从 JavaScript 对象创建二进制数据

有两种方法可以从 JavaScript 对象创建二进制数据:

  • 使用 Buffer.from() 方法

Buffer.from() 方法可以从字符串、数组或另一个缓冲区创建缓冲区。它也可以从 JavaScript 对象创建缓冲区,但需要将对象转换为字符串或数组。

const obj = {
  name: 'John Doe',
  age: 30
};

const buffer = Buffer.from(JSON.stringify(obj));
  • 使用 ArrayBuffer.from() 方法

ArrayBuffer.from() 方法可以从字符串、数组或另一个数组缓冲区创建数组缓冲区。它也可以从 JavaScript 对象创建数组缓冲区,但需要将对象转换为字符串或数组。

const obj = {
  name: 'John Doe',
  age: 30
};

const arrayBuffer = ArrayBuffer.from(JSON.stringify(obj));

3. 操作二进制数据

可以使用多种方法来操作二进制数据,包括:

  • 使用 Buffer 类的方法

Buffer 类提供了一系列方法来操作二进制数据,包括:

  • Buffer.copy():将缓冲区中的数据复制到另一个缓冲区。

  • Buffer.fill():用指定的值填充缓冲区。

  • Buffer.indexOf():在缓冲区中查找指定的值。

  • Buffer.lastIndexOf():在缓冲区中查找指定值的最后一个出现位置。

  • Buffer.readUInt8():从缓冲区中读取一个无符号 8 位整数。

  • Buffer.readUInt16():从缓冲区中读取一个无符号 16 位整数。

  • Buffer.readUInt32():从缓冲区中读取一个无符号 32 位整数。

  • Buffer.readInt8():从缓冲区中读取一个有符号 8 位整数。

  • Buffer.readInt16():从缓冲区中读取一个有符号 16 位整数。

  • Buffer.readInt32():从缓冲区中读取一个有符号 32 位整数。

  • Buffer.writeUInt8():向缓冲区中写入一个无符号 8 位整数。

  • Buffer.writeUInt16():向缓冲区中写入一个无符号 16 位整数。

  • Buffer.writeUInt32():向缓冲区中写入一个无符号 32 位整数。

  • Buffer.writeInt8():向缓冲区中写入一个有符号 8 位整数。

  • Buffer.writeInt16():向缓冲区中写入一个有符号 16 位整数。

  • Buffer.writeInt32():向缓冲区中写入一个有符号 32 位整数。

  • 使用 ArrayBuffer 类的方法

ArrayBuffer 类提供了一系列方法来操作二进制数据,包括:

  • ArrayBuffer.copy():将数组缓冲区中的数据复制到另一个数组缓冲区。
  • ArrayBuffer.fill():用指定的值填充数组缓冲区。
  • ArrayBuffer.indexOf():在数组缓冲区中查找指定的值。
  • ArrayBuffer.lastIndexOf():在数组缓冲区中查找指定值的最后一个出现位置。
  • ArrayBuffer.slice():从数组缓冲区中提取一个子数组缓冲区。