Heim >Web-Frontend >js-Tutorial >Anweisungen zur Verwendung der buffer.slice-Methode in node.js_node.js

Anweisungen zur Verwendung der buffer.slice-Methode in node.js_node.js

WBOY
WBOYOriginal
2016-05-16 16:27:451488Durchsuche

Methodenbeschreibung:

Gibt ein neues Pufferobjekt zurück. Dieser neue Puffer teilt sich den gleichen Speicher wie der alte Puffer.

Aber reduziert um Start- und Endindex-Offsets. (Wenn sich beispielsweise 1 bis 10 Bytes in einem Puffer befinden und wir nur 4 bis 8 Bytes benötigen, können wir diese Funktion buf.slice(4,8) verwenden. Da sie denselben Speicher gemeinsam nutzen, verbrauchen sie keinen Speicher . ,)

Da der Speicher gemeinsam genutzt wird, wird nach der Änderung des neuen Puffers auch der Inhalt des alten Puffers geändert.

Grammatik:

Code kopieren Der Code lautet wie folgt:

buffer.slice([Start], [Ende])

Empfangsparameter:

Start Startposition, Standard

end Endposition, Standard ist Pufferlänge

Beispiel:

Erstellen Sie einen Puffer mit dem ASCII-Alphabet, verwenden Sie die Slice-Funktion und ändern Sie dann ein Byte im ursprünglichen Puffer.

Code kopieren Der Code lautet wie folgt:

var buf1 = neuer Puffer(26);
für (var i = 0 ; i < 26 ; i ) {
buf1[i] = i 97; // 97 ist 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

Quellcode:

Code kopieren Der Code lautet wie folgt:

// TODO(trevnorris): funktioniert derzeit wie Array.prototype.slice(), das
// folgt nicht dem neuen Standard für das Auslösen von Indizes außerhalb des Bereichs.
Buffer.prototype.slice = function(start, end) {
var len = this.length;
start = ~~start;
end = util.isUndefined(end) ? len : ~~end;
if (start < 0) {
Start = len;
Wenn (Start < 0)
Start = 0;
} else if (start > len) {
Start = len;
}
if (end < 0) {
Ende = len;
Wenn (Ende < 0)
Ende = 0;
} else if (end > len) {
Ende = len;
}
if (end < start)
Ende = Anfang;
var buf = new NativeBuffer();
SliceOnto(this, buf, start, end);
buf.length = end - start;
if (buf.length > 0)
buf.parent = util.isUndefined(this.parent) ? this : this.parent;
Rückgabe buf;
};
Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn