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和Asp、Php等后端程序间传值编码统一
Apr 17 Javascript
Javascript 定时器调用传递参数的方法
Nov 12 Javascript
jQuery实现的Email中的收件人效果(按del键删除)
Mar 20 Javascript
javaScript如何生成xmlhttp
Dec 16 Javascript
js动画效果制件让图片组成动画代码分享
Jan 14 Javascript
jQuery中replaceAll()方法用法实例
Jan 16 Javascript
js+CSS实现弹出居中背景半透明div层的方法
Feb 26 Javascript
函数window.open实现关闭所有的子窗口
Aug 03 Javascript
Java中int与integer的区别(基本数据类型与引用数据类型)
Feb 19 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
Dec 01 Javascript
element-ui 远程搜索组件el-select在项目中组件化的实现代码
Dec 04 Javascript
ant design vue导航菜单与路由配置操作
Oct 28 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
example1.php
2006/10/09 PHP
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
PHP 常用数组内部函数(Array Functions)介绍
2013/06/05 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
2014/07/04 PHP
CI框架验证码CAPTCHA辅助函数用法实例
2014/11/05 PHP
JS 无法通过W3C验证的处理方法
2010/03/09 Javascript
C#中TrimStart,TrimEnd,Trim在javascript上的实现
2011/01/17 Javascript
JavaScript中的值类型详细介绍
2014/12/29 Javascript
jQuery及JS实现循环中暂停的方法
2015/02/02 Javascript
jQuery实现为图片添加镜头放大效果的方法
2015/06/25 Javascript
基于rollup的组件库打包体积优化小结
2018/06/18 Javascript
Angular中sweetalert弹框的基本使用教程
2018/07/22 Javascript
Vue实现简易翻页效果源码分享
2018/11/08 Javascript
express 项目分层实践详解
2018/12/10 Javascript
详解Angular cli配置过程记录
2019/11/07 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
JS实现前端路由功能示例【原生路由】
2020/05/29 Javascript
浅谈vue 二级路由嵌套和二级路由高亮问题
2020/08/06 Javascript
Python列表(list)、字典(dict)、字符串(string)基本操作小结
2014/11/28 Python
开源Web应用框架Django图文教程
2017/03/09 Python
Python数据类型中的“冒号“[::]——分片与步长操作示例
2018/01/24 Python
Tensorflow 合并通道及加载子模型的方法
2018/07/26 Python
pygame游戏之旅 添加游戏暂停功能
2018/11/21 Python
CSS3中伪元素::before和::after的用法示例
2017/09/18 HTML / CSS
会计专业毕业生自我鉴定
2013/10/29 职场文书
便利店投资创业计划书
2014/02/08 职场文书
反腐倡廉警示教育活动总结
2014/05/05 职场文书
材料专业大学毕业生自荐书
2014/07/02 职场文书
安全在我心中演讲稿
2014/09/01 职场文书
整改落实自查报告
2014/11/05 职场文书
学习心理学心得体会
2016/01/22 职场文书
校园文化艺术节开幕词
2016/03/04 职场文书
离婚协议书范本(2016最新版)
2016/03/18 职场文书
Django模型层实现多表关系创建和多表操作
2021/07/21 Python
《吸血鬼:避世 血猎》官宣4.27发售 系列首款大逃杀
2022/04/03 其他游戏
MySQL事务的隔离级别详情
2022/07/15 MySQL