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 相关文章推荐
使用jquery清空、复位整个输入域
Apr 02 Javascript
Jquery1.9.1源码分析系列(六)延时对象应用之jQuery.ready
Nov 24 Javascript
BootStrap使用popover插件实现鼠标经过显示并保持显示框
Jun 23 Javascript
浅谈jQuery绑定事件会叠加的解决方法和心得总结
Oct 26 Javascript
AngularJS实现表单验证功能
Jan 09 Javascript
微信小程序 摇一摇抽奖简单实例实现代码
Jan 09 Javascript
Angularjs中使用轮播图指令swiper
May 30 Javascript
Grunt针对静态文件的压缩,版本控制打包的实例讲解
Sep 29 Javascript
vue-cli的eslint相关用法
Sep 29 Javascript
vue的滚动条插件实现代码
Sep 07 Javascript
vue中实现回车键登录功能
Feb 19 Javascript
基于redis的小程序登录实现方法流程分析
May 25 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
php实现的css文件背景图片下载器代码
2014/11/11 PHP
借用Google的Javascript API Loader来加速你的网站
2009/01/28 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
innerHTML与jquery里的html()区别介绍
2012/10/12 Javascript
js通过地址栏给action传值(中文乱码全是问号)
2013/05/02 Javascript
jquery增加和删除元素的方法
2015/01/14 Javascript
非常酷炫的Bootstrap图片轮播动画
2016/05/27 Javascript
JS控制静态页面之间传递参数获取参数并应用的简单实例
2016/08/10 Javascript
微信小程序 获取设备信息 API实例详解
2016/10/02 Javascript
Bootstrap导航条鼠标悬停下拉菜单
2017/01/04 Javascript
微信小程序开发之入门实例教程篇
2017/03/07 Javascript
微信小程序实战之自定义toast(6)
2017/04/18 Javascript
Angualrjs 表单验证的两种方式(失去焦点验证和点击提交验证)
2017/05/09 Javascript
vue元素实现动画过渡效果
2017/07/01 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
vue + vuex todolist的实现示例代码
2018/03/09 Javascript
js中Object.defineProperty()方法的不详解
2018/07/09 Javascript
vue+webpack中配置ESLint
2018/11/07 Javascript
vue+element 模态框表格形式的可编辑表单实现
2019/06/07 Javascript
微信小程序 调用远程接口 给全局数组赋值代码实例
2019/08/13 Javascript
uniapp,微信小程序中使用 MQTT的问题
2020/07/11 Javascript
vue 解决无法对未定义的值,空值或基元值设置反应属性报错问题
2020/07/31 Javascript
区分vue-router的hash和history模式
2020/10/03 Javascript
python+POP3实现批量下载邮件附件
2018/06/19 Python
python将秒数转化为时间格式的实例
2018/09/16 Python
python中有帮助函数吗
2020/06/19 Python
Python代码需要缩进吗
2020/07/01 Python
python制作抽奖程序代码详解
2021/01/15 Python
navabi英国:设计师大码女装
2019/06/25 全球购物
德国购买踏板车网站:Microscooter
2019/10/14 全球购物
安全生产网格化管理实施方案
2014/03/01 职场文书
大学教师师德师风演讲稿
2014/08/22 职场文书
人事任命通知书
2015/04/21 职场文书
2016春季田径运动会广播稿
2015/12/21 职场文书
Python 中的Sympy详细使用
2021/08/07 Python
排查并解决Oracle sysaux表空间异常增长
2022/04/20 Oracle