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 json 新手入门文档
Dec 03 Javascript
jQuery学习笔记之控制页面实现代码
Feb 27 Javascript
JavaScript高级程序设计(第3版)学习笔记13 ECMAScript5新特性
Oct 11 Javascript
javascript编写实用的省市选择器
Feb 12 Javascript
JavaScript将Web页面内容导出到Word及Excel的方法
Feb 13 Javascript
基于JS实现类似支付宝支付密码输入框
Sep 02 Javascript
js 获取元素的具体样式信息getcss(实例讲解)
Jul 05 Javascript
dropload.js插件下拉刷新和上拉加载使用详解
Oct 20 Javascript
微信小程序使用input组件实现密码框功能【附源码下载】
Dec 11 Javascript
Vue shopCart 组件开发详解
Jan 26 Javascript
vue中使用gojs/jointjs的示例代码
Aug 24 Javascript
jQuery实现动态添加和删除input框实例代码
Mar 26 jQuery
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根据日期判断星座的函数分享
2014/02/13 PHP
php生成rss类用法实例
2015/04/14 PHP
php多重接口的实现方法
2015/06/20 PHP
PHP函数nl2br()与自定义函数nl2p()换行用法分析
2016/04/02 PHP
关于二级域名下使用一级域名下的COOKIE的问题
2011/11/07 Javascript
JQuery学习笔录 简单的JQuery
2012/04/09 Javascript
jQuery源码中的chunker 正则过滤符分析
2012/07/31 Javascript
点击弹出层外区域关闭弹出层jquery特效示例
2013/08/25 Javascript
jquery 获取 outerHtml 包含当前节点本身的代码
2014/10/30 Javascript
js实现网页抽奖实例
2015/08/05 Javascript
JavaScript原生编写《飞机大战坦克》游戏完整实例
2017/01/04 Javascript
JavaScript hasOwnProperty() 函数实例详解
2017/08/04 Javascript
canvas基础绘制-绚丽倒计时的实例
2017/09/17 Javascript
vue项目总结之文件夹结构配置详解
2017/12/13 Javascript
vue调试工具vue-devtools安装及使用方法
2018/11/07 Javascript
[05:11]TI9战队采访——VIRTUSPRO
2019/08/22 DOTA
python利用elaphe制作二维条形码实现代码
2012/05/25 Python
python错误处理详解
2014/09/28 Python
python3 模拟登录v2ex实例讲解
2017/07/13 Python
Python探索之静态方法和类方法的区别详解
2017/10/27 Python
深入分析python中整型不会溢出问题
2018/06/18 Python
Python中那些 Pythonic的写法详解
2019/07/02 Python
python with (as)语句实例详解
2020/02/04 Python
Python实现爬取网页中动态加载的数据
2020/08/17 Python
AVI-8手表美国官方商店:AVI-8 USA
2019/04/10 全球购物
在c#中using和new这两个关键字有什么意义
2013/05/19 面试题
《每逢佳节倍思亲》教后反思
2014/04/19 职场文书
县长群众路线对照检查材料思想汇报
2014/10/02 职场文书
高中校园广播稿
2014/10/21 职场文书
道路交通事故人身损害赔偿协议书
2014/11/19 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
让世界充满爱观后感
2015/06/10 职场文书
高中物理教学反思
2016/02/19 职场文书
windows11怎么查看自己安装的版本号? win11版本号的查看方法
2021/11/21 数码科技
Python编程中内置的NotImplemented类型的用法
2022/03/23 Python
Python实现文字pdf转换图片pdf效果
2022/04/03 Python