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 相关文章推荐
js读取本地excel文档数据的代码
Nov 11 Javascript
jQuery 实现侧边浮动导航菜单效果
Dec 26 Javascript
angularJS提交表单(form)
Feb 09 Javascript
javascript感应鼠标图片透明度显示的方法
Feb 24 Javascript
JavaScript构造函数详解
Dec 27 Javascript
深入浅析JavaScript中数据共享和数据传递
Apr 25 Javascript
AngularJs html compiler详解及示例代码
Sep 01 Javascript
纯js实现html转pdf的简单实例(推荐)
Feb 16 Javascript
JavaScript原型对象原理与应用分析
Dec 27 Javascript
修改vue源码实现动态路由缓存的方法
Jan 21 Javascript
JavaScript canvas实现跟随鼠标事件
Feb 10 Javascript
微信小程序点击按钮动态切换input的disabled禁用/启用状态功能
Mar 07 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+ACCESS 文章管理程序代码
2010/06/21 PHP
php expects parameter 1 to be resource, array given 错误
2011/03/23 PHP
PHPThumb图片处理实例
2014/05/03 PHP
PHP实现支持GET,POST,Multipart/form-data的HTTP请求类
2014/09/24 PHP
谈谈PHP连接Access数据库的注意事项
2016/08/12 PHP
php使用parse_str实现查询字符串解析到变量中的方法
2017/02/17 PHP
PHP页面静态化――纯静态与伪静态用法详解
2020/06/05 PHP
基于jQuery的合并表格中相同文本的相邻单元格的代码
2011/04/06 Javascript
javascript加号&quot;+&quot;的二义性说明
2013/03/04 Javascript
Jquery判断$(&quot;#id&quot;)获取的对象是否存在的方法
2013/09/25 Javascript
用js实现in_array的方法
2013/11/05 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
javascript实现十秒钟后注册按钮可点击的方法
2015/05/13 Javascript
js实现a标签超链接提交form表单的方法
2015/06/24 Javascript
jQuery添加删除DOM元素方法详解
2016/01/18 Javascript
javascript瀑布流布局实现方法详解
2016/02/17 Javascript
jQuery代码实现表格中点击相应行变色功能
2016/05/09 Javascript
javascript自执行函数
2017/02/10 Javascript
JavaScript 实现 Tab 点击切换实例代码
2017/03/25 Javascript
JavaScript实现简单的树形菜单效果
2017/06/23 Javascript
Mint UI 基于 Vue.js 移动端组件库
2017/11/07 Javascript
JavaScript函数、闭包、原型、面向对象学习笔记
2018/09/06 Javascript
layui多iframe页面控制定时器运行的方法
2019/09/05 Javascript
Js生成随机数/随机字符串的方法小结【5种方法】
2020/05/27 Javascript
JavaScript中的Proxy对象
2020/11/27 Javascript
[46:00]DOTA2上海特级锦标赛主赛事日 - 2 胜者组第一轮#4EG VS Fnatic第一局
2016/03/03 DOTA
python3使用scrapy生成csv文件代码示例
2017/12/28 Python
python实现Decorator模式实例代码
2018/02/09 Python
Python实现的朴素贝叶斯算法经典示例【测试可用】
2018/06/13 Python
俄罗斯在线水暖商店:Perfecto.ru
2019/10/25 全球购物
中学运动会广播稿
2014/01/19 职场文书
论文指导教师评语
2014/04/28 职场文书
施工安全生产承诺书
2014/05/23 职场文书
大学毕业生个人自荐书
2014/07/02 职场文书
公司人事专员岗位职责
2014/08/11 职场文书
Python爬虫:从m3u8文件里提取小视频的正确操作
2021/05/14 Python