阿西河

所有教程

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

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js Buffer.from

      Node.js Buffer.from(array)

      新增于: v5.10.0

      • array < integer[]>

      使用字节数组 array 创建 Buffer。

      // 创建一个包含字符串 'buffer' 的 UTF-8 字节的 Buffer。
      const buf = Buffer.from([0x62, 0x75, 0x66, 0x66, 0x65, 0x72]);
      

      Buffer.from(arrayBuffer[, byteOffset[, length]])

      新增于: v5.10.0

      • arrayBuffer < ArrayBuffer> | < SharedArrayBuffer> ArrayBuffer 或 SharedArrayBuffer,或 TypedArray 的 .buffer 属性。
      • byteOffset < integer> 开始拷贝的索引。默认为 0。
      • length < integer> 拷贝的字节数。默认为 arrayBuffer.length - byteOffset。

      创建 ArrayBuffer 的视图,但不会拷贝底层内存。 例如,当传入 TypedArray 的 .buffer 属性的引用时,新建的 Buffer 会与 TypedArray 共享同一内存。

      const arr = new Uint16Array(2);
      
      arr[0] = 5000;
      arr[1] = 4000;
      
      // 与 `arr` 共享内存。
      const buf = Buffer.from(arr.buffer);
      
      console.log(buf);
      // 输出: <Buffer 88 13 a0 0f>
      
      // 改变原先的 Uint16Array 也会改变 Buffer。
      arr[1] = 6000;
      
      console.log(buf);
      // 输出: <Buffer 88 13 70 17>
      

      byteOffset 和 length 指定 arrayBuffer 中与 Buffer 共享的内存范围。

      const ab = new ArrayBuffer(10);
      const buf = Buffer.from(ab, 0, 2);
      
      console.log(buf.length);
      // 输出: 2
      

      Buffer.from(buffer)

      新增于: v5.10.0

      • buffer < Buffer> |要拷贝数据的 Buffer 或 Uint8Array。

      拷贝 buffer 的数据到新建的 Buffer。

      const buf1 = Buffer.from('buffer');
      const buf2 = Buffer.from(buf1);
      
      buf1[0] = 0x61;
      
      console.log(buf1.toString());
      // 输出: auffer
      console.log(buf2.toString());
      // 输出: buffer
      

      Buffer.from(string[, encoding])

      新增于: v5.10.0

      string < string> 要编码的字符串。
      encoding < string> string 的字符编码。默认为 'utf8'。
      

      创建一个包含 string 的 Buffer。

      const buf1 = Buffer.from('this is a tést');
      const buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
      
      console.log(buf1.toString());
      // 输出: this is a tést
      console.log(buf2.toString());
      // 输出: this is a tést
      console.log(buf1.toString('ascii'));
      // 输出: this is a tC)st
      

      Buffer.from(object[, offsetOrEncoding[, length]])

      新增于: v8.2.0

      • object < Object> 支持 Symbol.toPrimitive 或 valueOf() 的对象。
      • offsetOrEncoding < number> | < string> 字节偏移量或字符编码,取决于 object.valueOf() 或 object[Symbol.toPrimitive]() 返回的值。
      • length < number> 长度,取决于 object.valueOf() 或 object[Symbol.toPrimitive]() 的返回值。

      对于 valueOf() 返回值不严格等于 object 的对象,返回 Buffer.from(object.valueOf(), offsetOrEncoding, length)。

      const buf = Buffer.from(new String('this is a test'));
      // 输出: <Buffer 74 68 69 73 20 69 73 20 61 20 74 65 73 74>
      

      对于支持 Symbol.toPrimitive 的对象,会返回 Buffer.from(objectSymbol.toPrimitive, offsetOrEncoding, length)。

      class Foo {
        [Symbol.toPrimitive]() {
          return 'this is a test';
        }
      }
      
      const buf = Buffer.from(new Foo(), 'utf8');
      // 输出: <Buffer 74 68 69 73 20 69 73 20 61 20 74 65 73 74>
      

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


      目录
      目录