Descrição do método:
Retorna um novo objeto de buffer e o novo buffer e o buffer antigo compartilham uma memória.
Mas é reduzido pelo deslocamento de início e final do índice. (Por exemplo, se houver 1 a 10 bytes em um buffer, queremos apenas 4-8 bytes, para que possamos usar essa função BUF.Slice (4,8), porque eles compartilham uma memória, para que não consumam memória.)
Como a memória é compartilhada, depois de modificar o novo buffer, o conteúdo do buffer antigo também será modificado.
gramática:
A cópia do código é a seguinte:
buffer.slice ([start], [end])
Receber parâmetros:
Iniciar a posição de início, padrão
Posição final final, padrão para o comprimento do buffer
exemplo:
Crie um buffer usando o alfabeto ASCII, use a função de fatia e modifique um byte no buffer original.
A cópia do código é a seguinte:
var Buf1 = novo buffer (26);
for (var i = 0; i <26; i ++) {
buf1 [i] = i + 97; // 97 é 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 -fonte:
A cópia do código é a seguinte:
// TODO (Trevnorris): Atualmente funciona como Array.prototype.slice (), que
// não segue o novo padrão para gastar índices fora de alcance.
Buffer.prototype.slice = function (start, end) {
var len = this.length;
start = ~~ Start;
end = util.isundefined (end)? Len: ~~ final;
if (start <0) {
start += len;
se (iniciar <0)
start = 0;
} else if (start> len) {
start = len;
}
if (end <0) {
fim += len;
if (fim <0)
fim = 0;
} else if (end> len) {
end = len;
}
if (final <start)
end = start;
var BUF = new NativeBuffer ();
SliceOnto (isto, buf, start, fim);
buf.length = end - start;
if (buf.length> 0)
buf.parent = util.isundefined (this.parent)? isto: this.parent;
retornar buf;
};