阿西河

所有教程

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

我的收藏

    最近访问  (文章)

      教程列表

      抓包专区
      测试专区

      Node.js Buffer buf.slice

      Node.js Buffer buf.slice([start[, end]]) 版本历史

      版本变更
      v7.1.0, v6.9.2Coercing the offsets to integers now handles values outside the 32-bit integer range properly.
      v7.0.0All offsets are now coerced to integers before doing any calculations with them.
      v0.3.0新增于: v0.3.0
      • start < integer> 开始切片的偏移量。默认为 0。
      • end < integer> 结束切片的偏移量(不包含)。默认为 buf.length。
      • 返回: < Buffer>

      创建一个指向与原始 Buffer 同一内存的新 Buffer,但使用 start 和 end 进行了裁剪。

      修改新建的 Buffer 切片,也会同时修改原始的 Buffer,因为两个对象所分配的内存是重叠的。

      // 创建一个包含 ASCII 字母表的 `Buffer`,然后进行切片,再修改原始 `Buffer` 上的一个字节。
      
      const buf1 = Buffer.allocUnsafe(26);
      
      for (let i = 0; i < 26; i++) {
        // 97 是 'a' 的十进制 ASCII 值。
        buf1[i] = i + 97;
      }
      
      const buf2 = buf1.slice(0, 3);
      
      console.log(buf2.toString('ascii', 0, buf2.length));
      // 输出: abc
      
      buf1[0] = 33;
      
      console.log(buf2.toString('ascii', 0, buf2.length));
      // 输出: !bc
      

      如果指定负的偏移量,则切片的生成是相对于 buf 的末尾而不是开头。

      const buf = Buffer.from('buffer');
      
      console.log(buf.slice(-6, -1).toString());
      // 输出: buffe(相当于 buf.slice(0, 5))
      
      console.log(buf.slice(-6, -2).toString());
      // 输出: buff(相当于 buf.slice(0, 4))
      
      console.log(buf.slice(-5, -2).toString());
      // 输出: uff(相当于 buf.slice(1, 4))
      

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


      目录
      本文目录
      目录