Home >Web Front-end >JS Tutorial >Instructions for using the buffer.slice method in node.js_node.js

Instructions for using the buffer.slice method in node.js_node.js

WBOY
WBOYOriginal
2016-05-16 16:27:451496browse

Method description:

Returns a new buffer object. This new buffer shares the same memory as the old buffer.

But reduced by start and end index offsets. (For example, if there are 1 to 10 bytes in a buffer, and we only want 4-8 bytes, we can use this function buf.slice(4,8). Because they share the same memory, they will not consume memory. ,)

Because memory is shared, after modifying the new buffer, the contents of the old buffer will also be modified.

Grammar:

Copy code The code is as follows:

buffer.slice([start], [end])

Receive parameters:

start Starting position, default

end End position, default is buffer length

Example:

Create a buffer using the ASCII alphabet, use the slice function, and then modify a byte in the original buffer.

Copy code The code is as follows:

var buf1 = new Buffer(26);
for (var i = 0 ; i < 26 ; i ) {
buf1[i] = i 97; // 97 is 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

Source code:

Copy code The code is as follows:

// TODO(trevnorris): currently works like Array.prototype.slice(), which
// doesn't follow the new standard for throwing on out of range indexes.
Buffer.prototype.slice = function(start, end) {
var len = this.length;
start = ~~start;
end = util.isUndefined(end) ? len : ~~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(this, buf, start, end);
buf.length = end - start;
if (buf.length > 0)
buf.parent = util.isUndefined(this.parent) ? this : this.parent;
Return buf;
};
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn