Descripción del método:
Devuelve un nuevo objeto de búfer, y el nuevo búfer y el antiguo búfer comparten una memoria.
Pero se reduce por el desplazamiento del índice de inicio y final. (Por ejemplo, si hay 1 a 10 bytes en un búfer, solo queremos 4-8 bytes, por lo que podemos usar esta función Buf.slice (4,8), porque comparten una memoria, por lo que no consumirán memoria).
Debido a que la memoria se comparte, después de modificar el nuevo búfer, el contenido del antiguo búfer también se modificará.
gramática:
La copia del código es la siguiente:
buffer.slice ([inicio], [final])
Recibir parámetros:
Iniciar posición de inicio, predeterminado
Posición final final, predeterminado a la longitud del búfer
ejemplo:
Cree un búfer usando el alfabeto ASCII, use la función de corte y luego modifique un byte en el búfer original.
La copia del código es la siguiente:
var buf1 = nuevo búfer (26);
para (var i = 0; i <26; i ++) {
buf1 [i] = i + 97; // 97 es ASCII a
}
var buf2 = buf1.slice (0, 3);
console.log (buf2.ToString ('ASCII', 0, buf2.length));
buf1 [0] = 33;
console.log (buf2.ToString ('ASCII', 0, buf2.length));
// ABC
//! BC
Código fuente:
La copia del código es la siguiente:
// TODO (Trevnorris): actualmente funciona como array.prototype.slice (), que
// no sigue el nuevo estándar para arrojar índices fuera de rango.
Buffer.prototype.slice = function (start, end) {
var len = this.length;
inicio = ~~ inicio;
end = util.isundefined (final)? Len: ~~ fin;
if (inicio <0) {
inicio += len;
if (inicio <0)
inicio = 0;
} else if (inicio> len) {
inicio = len;
}
if (end <0) {
final += len;
if (final <0)
final = 0;
} else if (end> len) {
final = len;
}
if (final <inicio)
final = inicio;
var buf = new nationBuffer ();
sliceonto (esto, buf, inicio, final);
buf.length = end - inicio;
if (buf.length> 0)
buf.parent = util.isundefined (this.parent)? esto: this.Parent;
devolver buf;
};