メソッド説明:
新しいバッファオブジェクトを返し、新しいバッファーと古いバッファーはメモリを共有します。
ただし、開始および終了インデックスオフセットにより削減されます。 (たとえば、バッファに1〜10バイトがある場合、4〜8バイトしか必要ないので、1つのメモリを共有しているため、この関数buf.slice(4,8)を使用できます。
メモリが共有されるため、新しいバッファーを変更した後、古いバッファーの内容も変更されます。
文法:
コードコピーは次のとおりです。
buffer.slice([start]、[end])
パラメーターを受信:
開始位置、デフォルト
エンドエンド位置、デフォルトでバッファー長になります
例:
ASCIIアルファベットを使用してバッファーを作成し、スライス関数を使用してから、元のバッファーのバイトを変更します。
コードコピーは次のとおりです。
var buf1 = new Buffer(26);
for(var i = 0; i <26; i ++){
buf1 [i] = i + 97; // 97はasciiです
}
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.isundefied(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 NativeBuffer();
Sliceonto(これ、buf、start、end);
buf.length = end -start;
if(buf.length> 0)
buf.parent = util.isundefined(this.parent)?これ:this.parent;
bufを返します。
};