Метод Описание:
Возвращает новый буферный объект, а новый буфер и старый буфер разделяют память.
Но это уменьшается к смещению индекса начала и конечного индекса. (Например, если в буфере есть от 1 до 10 байтов, мы хотим только 4-8 байтов, чтобы мы могли использовать эту функцию Buf.Slice (4,8), потому что они имеют одну память, поэтому они не будут потреблять память.)
Поскольку память передается, после изменения нового буфера, содержание старого буфера также будет изменено.
Грамматика:
Кода -копия выглядит следующим образом:
buffer.slice ([start], [end])
Получить параметры:
начало начала позиции, по умолчанию
конечная позиция, по умолчанию в длину буфера
пример:
Создайте буфер, используя алфавит ASCII, используйте функцию среза, а затем измените байт в исходном буфере.
Кода -копия выглядит следующим образом:
var buf1 = новый буфер (26);
для (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
Исходный код:
Кода -копия выглядит следующим образом:
// todo (trevnorris): в настоящее время работает как Array.prototype.slice (), который
// не следует новому стандарту для того, чтобы забрать индексы из диапазона.
Buffer.prototype.slice = function (start, end) {
var len = this.length;
start = ~~ Start;
end = util.isundefined (end)? Лен: ~~ end;
if (start <0) {
start += len;
if (Start <0)
start = 0;
} else if (start> len) {
start = len;
}
if (end <0) {
end += len;
if (end <0)
end = 0;
} else if (end> len) {
end = len;
}
if (end <start)
end = start;
var buf = new CarnyBuffer ();
sliceonto (это, buf, start, end);
buf.length = end - start;
if (buf.length> 0)
buf.parent = util.isundefined (this.parent)? это: это. Pparent;
вернуть BUF;
};