buf.slice()

buf.slice([start[, end]])

  • start {Number} 默认:0
  • end {Number} 默认:buffer.length
  • 返回:{Buffer}
返回一个指向相同原始内存的新 Buffer ,但会有偏移并通过 start 和 end 索引值进行裁剪。 请注意,修改这个新的 Buffer 切片,将会修改原始 Buffer 的内存,因为这两个对象共享所分配的内存。 例子:创建一个 ASCII 字母的 Buffer,进行切片,然后修改原始 Buffer 上的一个字节。 ``` const buf1 = Buffer.allocUnsafe(26);

for (var i = 0; i < 26; i++) {
buf1[i] = i + 97; // 97 is ASCII a
}

const buf2 = buf1.slice(0, 3);
buf2.toString('ascii', 0, buf2.length);
// Returns: 'abc'
buf1[0] = 33;
buf2.toString('ascii', 0, buf2.length);
// Returns : '!bc'


指定负索引会导致产生相对于这个 Buffer 的末尾而不是开头的切片(slice)。

const buf = Buffer.from('buffer');

buf.slice(-6, -1).toString();
// Returns 'buffe', equivalent to buf.slice(0, 5)
buf.slice(-6, -2).toString();
// Returns 'buff', equivalent to buf.slice(0, 4)
buf.slice(-5, -2).toString();
// Returns 'uff', equivalent to buf.slice(1, 4)

原文地址:https://www.cnblogs.com/lalalagq/p/9908519.html