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


Posted in Javascript onDecember 10, 2014

方法说明:

返回一个新的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 < 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

源码:

// 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;

};
Javascript 相关文章推荐
Javascript 静态页面实现随机显示广告的办法
Nov 17 Javascript
jquery判断元素的子元素是否存在的示例代码
Feb 04 Javascript
JavaScript实现同步于本地时间的动态时间显示方法
Feb 02 Javascript
javascript实现简单查找与替换的方法
Jul 22 Javascript
JavaScript实现Java中Map容器的方法
Oct 09 Javascript
AngularJS 应用身份认证的技巧总结
Nov 07 Javascript
JS识别浏览器类型(电脑浏览器和手机浏览器)
Nov 18 Javascript
使用express获取微信小程序二维码小记
May 21 Javascript
Vue的路由及路由钩子函数的实现
Jul 02 Javascript
一步一步实现Vue的响应式(对象观测)
Sep 02 Javascript
react 生命周期实例分析
May 18 Javascript
js 实现碰撞检测的示例
Oct 28 Javascript
node.js中的buffer.write方法使用说明
Dec 10 #Javascript
node.js中的http.request.end方法使用说明
Dec 10 #Javascript
node.js中的emitter.on方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.once方法使用说明
Dec 10 #Javascript
node.js中的emitter.emit方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.removeListener方法使用说明
Dec 10 #Javascript
node.js中的events.emitter.listeners方法使用说明
Dec 10 #Javascript
You might like
《Re:从零开始的异世界生活》剧情体验,手游新作定名
2020/04/09 日漫
global.php
2006/12/09 PHP
PHP+jQuery实现自动补全功能源码
2013/05/15 PHP
php导出word文档与excel电子表格的简单示例代码
2014/03/08 PHP
培养自己的php编码规范
2015/09/28 PHP
php获取一定范围内取N个不重复的随机数
2016/05/28 PHP
PHP利用超级全局变量$_POST来接收表单数据的实例
2016/11/05 PHP
php json转换相关知识(小结)
2018/12/21 PHP
基于jQuery的固定表格头部的代码(IE6,7,8测试通过)
2010/05/18 Javascript
JQuery中根据属性或属性值获得元素(6种情况获取方法)
2013/01/17 Javascript
node.js中的buffer.length方法使用说明
2014/12/14 Javascript
获取当前按钮或者html的ID名称实例(推荐)
2017/06/23 Javascript
Angular实现可删除并计算总金额的购物车功能示例
2017/12/26 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
微信小程序实现animation动画
2018/01/26 Javascript
Element Table的row-class-name无效与动态高亮显示选中行背景色
2018/11/30 Javascript
ios中视频的最后一桢问题解决
2019/05/14 Javascript
[09:33]2015国际邀请赛第四日TOP10
2015/08/08 DOTA
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
Python的Django框架中模板碎片缓存简介
2015/07/24 Python
Python中shutil模块的常用文件操作函数用法示例
2016/07/05 Python
使用Anaconda3建立虚拟独立的python2.7环境方法
2018/06/11 Python
Django model select的多种用法详解
2019/07/16 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
基于python实现matlab filter函数过程详解
2020/06/08 Python
Opodo意大利:欧洲市场上领先的在线旅行社
2019/10/24 全球购物
巴西Bo.Bô官方在线商店:经营奢侈品时尚业务
2020/03/16 全球购物
办公室主任岗位职责
2013/11/08 职场文书
运动会广播稿200字
2014/01/15 职场文书
党的群众路线教育学习材料
2014/05/12 职场文书
贷款委托书
2014/08/01 职场文书
应用心理学专业求职信
2014/08/04 职场文书
室内趣味活动方案
2014/08/24 职场文书
放牛班的春天观后感
2015/06/01 职场文书
如何用vue实现网页截图你知道吗
2021/11/17 Vue.js
Python使用永中文档转换服务
2022/05/06 Python