ホームページ >ウェブフロントエンド >jsチュートリアル >node.js_node.js でのbuffer.slice メソッドの使用手順

node.js_node.js でのbuffer.slice メソッドの使用手順

WBOY
WBOYオリジナル
2016-05-16 16:27:451498ブラウズ

メソッドの説明:

新しいバッファ オブジェクトを返します。この新しいバッファは古いバッファと同じメモリを共有します。

ただし、開始インデックスと終了インデックスのオフセットによって減少します。 (たとえば、バッファー内に 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;
戻りバフ;
};
声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。