• start {integer} 新 Buffer 开始的位置。默认值: 0
    • end {integer} 新 Buffer 结束的位置(不包含)。默认值: [buf.length]。
    • 返回: {Buffer}

    返回一个新的 Buffer,它引用与原始的 Buffer 相同的内存,但是由 startend 索引进行偏移和裁剪。

    指定大于 [buf.length] 的 end 将会返回与 end 等于 [buf.length] 时相同的结果。

    此方法继承自 [TypedArray#subarray()]。

    修改新的 Buffer 切片将会修改原始 Buffer 中的内存,因为两个对象分配的内存是重叠的。

    1. // 使用 ASCII 字母创建一个 `Buffer`,然后进行切片,再修改原始 `Buffer` 中的一个字节。
    2. const buf1 = Buffer.allocUnsafe(26);
    3. for (let i = 0; i < 26; i++) {
    4. // 97 是 'a' 的十进制 ASCII 值。
    5. buf1[i] = i + 97;
    6. }
    7. const buf2 = buf1.subarray(0, 3);
    8. console.log(buf2.toString('ascii', 0, buf2.length));
    9. // 打印: abc
    10. buf1[0] = 33;
    11. console.log(buf2.toString('ascii', 0, buf2.length));
    12. // 打印: !bc

    指定负的索引会导致切片的生成是相对于 buf 的末尾而不是开头。

    1. const buf = Buffer.from('buffer');
    2. console.log(buf.subarray(-6, -1).toString());
    3. // 打印: buffe
    4. // (相当于 buf.subarray(0, 5)。)
    5. console.log(buf.subarray(-6, -2).toString());
    6. // 打印: buff
    7. // (相当于 buf.subarray(0, 4)。)
    8. console.log(buf.subarray(-5, -2).toString());
    9. // 打印: uff
    10. // (相当于 buf.subarray(1, 4)。)