您好,欢迎访问一九零五行业门户网

node.js中的buffer.slice方法使用说明_node.js

方法说明:
返回一个新的buffer对象,这个新buffer和老buffer公用一个内存。
但是被start和end索引偏移缩减了。(比如,一个buffer里有1到10个字节,我们只想要4-8个字节,就可以用这个函数buf.slice(4,8),因为他们共用一个内存,所以不会消耗内存,)
因为共用内存,所以修改新的buffer后,老buffer的内容同样也会被修改。
语法:
复制代码 代码如下:
buffer.slice([start], [end])
接收参数:
start      开始位置,默认
end      结束位置,默认为buffer长度
例子:
用ascii码字母表创建一个buffer,用一下slice函数,然后修改原buffer中的一个字节。
复制代码 代码如下:
var buf1 = new buffer(26);
for (var i = 0 ; 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
源码:
复制代码 代码如下:
// 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     start += len;
    if (start       start = 0;
  } else if (start > len) {
    start = len;
  }
  if (end     end += len;
    if (end       end = 0;
  } else if (end > len) {
    end = len;
  }
  if (end     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;
};
其它类似信息

推荐信息