阿西河

所有教程

公众号
🌙
阿西河前端的公众号

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js Buffer TypedArray

      Node.js Buffer TypedArray

      版本变更
      v3.0.0The Buffers class now inherits from Uint8Array.

      Buffer 实例也是 Uint8Array 实例,但是与 TypedArray 有微小的不同。 例如,ArrayBuffer#slice() 会创建切片的拷贝,而 Buffer#slice() 是在现有的 Buffer 上创建而不拷贝。

      使用 TypeArray 的 .buffer 属性可以创建一个与其共享内存的 Buffer。

      const arr = new Uint16Array(2);
      
      arr[0] = 5000;
      arr[1] = 4000;
      
      // 拷贝 `arr` 的内容。
      const buf1 = Buffer.from(arr);
      // 与 `arr` 共享内存。
      const buf2 = Buffer.from(arr.buffer);
      
      console.log(buf1);
      // 输出: <Buffer 88 a0>
      console.log(buf2);
      // 输出: <Buffer 88 13 a0 0f>
      
      arr[1] = 6000;
      
      console.log(buf1);
      // 输出: <Buffer 88 a0>
      console.log(buf2);
      // 输出: <Buffer 88 13 70 17>
      

      当使用 TypedArray 的 .buffer 创建 Buffer 时,也可以通过传入 byteOffset 和 length 参数只使用 ArrayBuffer 的一部分。

      const arr = new Uint16Array(20);
      const buf = Buffer.from(arr.buffer, 0, 16);
      
      console.log(buf.length);
      // 输出: 16
      

      Buffer.from() 与 TypedArray.from() 有着不同的实现。 TypedArray 可以有映射函数,对类型数组的每个元素各调用一次:

      • TypedArray.from(source[, mapFn[, thisArg]])

      Buffer.from() 不支持映射函数:

      • Buffer.from(array)
      • Buffer.from(buffer)
      • Buffer.from(arrayBuffer[, byteOffset[, length]])
      • Buffer.from(string[, encoding])

      更多内容请参考:Node.js Buffer 缓冲器,或者通过 点击对应菜单 进行查看;


      目录
      本文目录
      目录