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实现的完美渐变弹出层效果代码
Apr 02 Javascript
IE下js调试工具Companion.JS
Oct 15 Javascript
QQ空间顶部折页撕开效果示例代码
Jun 15 Javascript
jQuery切换所有复选框选中状态的方法
Jul 02 Javascript
详解Node全局变量global模块
Sep 28 Javascript
AngularJS使用ui-route实现多层嵌套路由的示例
Jan 10 Javascript
vue获取当前激活路由的方法
Mar 17 Javascript
微信小程序WebSocket实现聊天对话功能
Jul 06 Javascript
LayerClose弹窗关闭刷新方法
Aug 17 Javascript
Element-UI中Upload上传文件前端缓存处理示例
Feb 21 Javascript
详解JS判断页面是在手机端还是在PC端打开的方法
Apr 26 Javascript
Vue-Cli 3.0 中配置高德地图的两种方式
Jun 19 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 文件上传全攻略
2010/04/28 PHP
php模板中出现空行解决方法
2011/03/08 PHP
PHP中输出转义JavaScript代码的实现代码
2011/04/22 PHP
php数组的概述及分类与声明代码演示
2013/02/26 PHP
用PHP实现浏览器点击下载TXT文档的方法详解
2013/06/02 PHP
PHP获取MSN好友列表类的实现代码
2013/06/23 PHP
php开发微信支付获取用户地址
2015/10/04 PHP
Alliance vs Liquid BO3 第二场2.13
2021/03/10 DOTA
JQuery中each()的使用方法说明
2010/08/19 Javascript
Extjs4 关于Store的一些操作(加载/回调/添加)
2013/04/18 Javascript
Flex通过JS获取客户端IP和计算机名的实例代码
2013/11/21 Javascript
jQuery获取父元素及父节点的方法小结
2016/04/14 Javascript
jQuery过滤特殊字符及JS字符串转为数字
2016/05/26 Javascript
JavaScript函数中关于valueOf和toString的理解
2016/06/14 Javascript
jQuery插件 Jqplot图表实例
2016/06/18 Javascript
jquery easyui dataGrid动态改变排序字段名的方法
2017/03/02 Javascript
JS排序之冒泡排序详解
2017/04/08 Javascript
anime.js 实现带有描边动画效果的复选框(推荐)
2017/12/24 Javascript
vue输入节流,避免实时请求接口的实例代码
2019/10/30 Javascript
python实现迭代法求方程组的根过程解析
2019/11/25 Javascript
Python随机生成一个6位的验证码代码分享
2015/03/24 Python
利用QT写一个极简单的图形化Python闹钟程序
2015/04/07 Python
复习Python中的字符串知识点
2015/04/14 Python
Python入门之modf()方法的使用
2015/05/15 Python
Python列表list解析操作示例【整数操作、字符操作、矩阵操作】
2017/07/25 Python
浅谈pandas用groupby后对层级索引levels的处理方法
2018/11/06 Python
python将txt等文件中的数据读为numpy数组的方法
2018/12/22 Python
TensorFlow2.1.0最新版本安装详细教程
2020/04/08 Python
美国知名平价彩妆品牌:e.l.f. Cosmetics
2017/11/20 全球购物
6PM官网:折扣鞋、服装及配饰
2018/08/03 全球购物
super()与this()的区别
2016/01/17 面试题
linux面试题参考答案(9)
2016/01/29 面试题
抗洪抢险事迹材料
2014/05/06 职场文书
公司开业主持词
2015/07/02 职场文书
国际贸易实训总结
2015/08/03 职场文书
导游词之云南丽江-泸沽湖
2019/09/26 职场文书