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 相关文章推荐
网页里控制图片大小的相关代码
Jun 25 Javascript
jQuery版仿Path菜单效果
Dec 15 Javascript
JQuery学习笔录 简单的JQuery
Apr 09 Javascript
node.js中的http.response.write方法使用说明
Dec 14 Javascript
分享纯手写漂亮的表单验证
Nov 19 Javascript
Javascript 数组去重的方法(四种)详解及实例代码
Nov 24 Javascript
jQuery实现限制文本框的输入长度
Jan 11 Javascript
如何用JS/HTML将时间戳转换为“xx天前”的形式
Feb 06 Javascript
一个可复用的vue分页组件
May 15 Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 Javascript
在Vant的基础上封装下拉日期控件的代码示例
Dec 05 Javascript
浅谈TypeScript的类型保护机制
Feb 23 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
thinkphp3.2.2前后台公用类架构问题分析
2014/11/25 PHP
Yii2中cookie用法示例分析
2016/07/18 PHP
Ajax实现对静态页面的文章访问统计功能示例
2016/10/10 PHP
推荐dojo学习笔记
2007/03/24 Javascript
JavaScript Event学习第七章 事件属性
2010/02/07 Javascript
js 判断checkbox是否选中的实现代码
2010/11/23 Javascript
JS 进度条效果实现代码整理
2011/05/21 Javascript
js捕获鼠标右键菜单中的粘帖事件实现代码
2013/04/01 Javascript
Jquery实现图片放大镜效果的思路及代码(自写)
2013/10/18 Javascript
教你如何使用PHP输出中文JSON字符串
2014/05/22 Javascript
jquery操作对象数组元素方法详解
2014/11/26 Javascript
JavaScript点击按钮后弹出透明浮动层的方法
2015/05/11 Javascript
JS实现鼠标滑过链接改变网页背景颜色的方法
2015/10/20 Javascript
基于jquery实现ajax无刷新评论
2020/08/19 Javascript
JavaScript中Promise的使用详解
2017/02/26 Javascript
基于input动态模糊查询的实现方法
2017/12/12 Javascript
Vue 创建组件的两种方法小结(必看)
2018/02/23 Javascript
express框架中使用jwt实现验证的方法
2019/08/25 Javascript
javascript实现函数柯里化与反柯里化过程解析
2019/10/08 Javascript
vue 解决异步数据更新问题
2019/10/29 Javascript
vue v-for 点击当前行,获取当前行数据及event当前事件对象的操作
2020/09/10 Javascript
[04:03]DOTA2英雄梦之声_第02期_风暴之灵
2014/06/30 DOTA
Mac OS X10.9安装的Python2.7升级Python3.3步骤详解
2013/12/04 Python
python基础教程之字典操作详解
2014/03/25 Python
Python中如何获取类属性的列表
2016/12/26 Python
Bravofly德国:预订廉价航班和酒店
2019/09/22 全球购物
TUMI香港官网:国际领先的行李箱、背囊品牌
2021/03/01 全球购物
Java和Javasciprt的区别
2012/09/02 面试题
英语专业学生个人求职信范文
2014/01/06 职场文书
学习十八大报告感言
2014/02/28 职场文书
中文专业自荐书
2014/06/29 职场文书
安全生产目标管理责任书
2014/07/25 职场文书
2015中学教师个人工作总结
2015/07/22 职场文书
选对餐饮营销策略,营业额才会上涨
2019/08/27 职场文书
PyQt5 显示超清高分辨率图片的方法
2021/04/11 Python
Python基础之条件语句详解
2021/06/16 Python