メソッドの説明:
新しいバッファ オブジェクトを返します。この新しいバッファは古いバッファと同じメモリを共有します。
ただし、開始インデックスと終了インデックスのオフセットによって減少します。 (たとえば、バッファー内に 1 ~ 10 バイトがあり、4 ~ 8 バイトだけが必要な場合、この関数 buf.slice(4,8) を使用できます。これらは同じメモリを共有するため、メモリを消費しません。 、)
メモリが共有されているため、新しいバッファを変更すると、古いバッファの内容も変更されます。
文法:
buffer.slice([開始], [終了])
パラメータを受信します:
start 開始位置、デフォルト
end 終了位置、デフォルトはバッファ長です
例:
ASCII アルファベットを使用してバッファを作成し、スライス関数を使用して、元のバッファのバイトを変更します。
var buf1 = 新しいバッファ(26);
for (var i = 0 ; 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.isUnknown(end) len : ~~end;
if (開始
開始 = len;
If (開始
開始 = 0;
} else if (開始 > len) {
開始 = len;
}
if (end
終了 = len;
If (終了
終了 = 0;
} else if (end > len) {
終了 = len;
}
if (終了
終了 = 開始;
var buf = new NativeBuffer();
liceOnto(this, buf, start, end);
buf.length = 終了 - 開始;
if (buf.length > 0)
buf.parent = util.isUnknown(this.parent) ? this : this.parent;
戻りバフ;
};