再nodejs里,很多类是引入模块才能使用,Buffer是一个全局类,他不需要require引入

Buffer有三种构造函数

//1.在构造函数传一个数字,规定buffer的长度。默认全是16进制的0
var bf = new Buffer(size); //2.传一个数组给buffer
var bf = new Buffer(array]); //3.传入一个字符串和编码格式,编码格式可以省略
var bf = new Buffer(str,[encoding]);

buffer与字符串的区别

buffer里存的是16进制数字,并且不同的字符的长度是不同的,因此buffer的长度是按照字节长度计算的

var str  = '你是谁';
console.log(str.length); //
var bf = new Buffer(str);
console.log(bf.length);//
字符串有一些操作的方法,indexOf()等,Buffer没有,只有一个取出指定位置处理数据的方法slice,和String的slice一样,并且修改slice取出的数据,buffer也会改变
字符串是不可以改变的,而buffer对象是可以改变的
var str = '你是谁';
var bf = new Buffer(str);
console.log(str); //你是谁
console.log(bf); //<Buffer e4 bd a0 e6 98 af e8 b0 81> str[1] = '的';
console.log(str); //你是谁
bf[2] = 0;
console.log(bf); //<Buffer e4 bd 00 e6 98 af e8 b0 81>

buffer转换为字符串toString()

var bf = new Buffer('你是谁');
console.log(bf.toString('utf8',3));
//有三个参数都是可选的,第一个参数指定编码格式,第二个和第三个是起始位置和终止位置

buffer的write方法

var bf = new Buffer('你是谁');
bf.write('的',3,3,'utf8');
console.log(bf.toString());
//有四个参数,1是写入的字符串,2,3是要写入的起始位置和终止位置,4是编码格式

buffer与json的互换

var bf = new Buffer('你是谁');
json = JSON.stringify(bf);
console.log(json); //转换为字符串
var arr = JSON.parse(json);
console.log(arr); //转换为对象
var copy = new Buffer(arr);
console.log(copy.toString()); //还原

buffer的复制copy

var bf = new Buffer('你是谁');
console.log(bf);
var copyBf = new Buffer('我');
console.log(copyBf);
//把bf复制到copyBf里,第二个参数是从copyBf的那个位置开始,第三个参数是从bf的那个位置开始,第四个是bf的那个位置结束,不包括最后一个
bf.copy(copyBf,1,1,3);
console.log(copyBf);

buffer的类方法

//1.isBuffer
var bf = '你是谁';
console.log(Buffer.isBuffer(bf)); //2.byteLength指定字符串的字节长度
var str = '你是谁';
console.log(Buffer.byteLength(str)); //3.concat几个Buffer连接,返回一个新的Buffer,参数有俩,第一个数组,要连接的buffer数组,第二个是设置新buffer的长度
console.log(Buffer.concat([new Buffer(3),new Buffer('123')],2)); //4.isEncoding判断是不是有效的编码格式字符串
var str1 = 'utf8';
var str2 = 'cher';
console.log(Buffer.isEncoding(str1)); //true
console.log(Buffer.isEncoding(str2)); //false

nodeJs的Buffer操作的更多相关文章

  1. nodejs: 理解Buffer

    学习nodejs中buffer这一章,有一段写到buffer的拼接,其中一段源码非常优美,特拿来与大家共享. var chunks = []; var size = 0; res.on('data', ...

  2. Nodejs通过Thrift操作hbase卡住原因分析及与javascript的垃圾回收机制的关系

    在最近使用Nodejs通过Thrift操作hbase的时候写了个脚本,不断发送http请求,从而取得hbase下所需的数据,但是在run的过程中for循环并没有执行完全,在执行一部分后会卡住,就再也进 ...

  3. 大熊君大话NodeJS之------Buffer模块

    一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...

  4. NodeJS中Buffer模块详解

    一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...

  5. Nodejs·理解Buffer

    Node里面的Buffer其实就是用于网络请求.文件读取等等操作,而且是分配在堆外,不会占用堆内的内存,这也是因为本来V8的内存就很小,如果读取大文件,那就...... 之前有看过Logstash的B ...

  6. nodejs 使用mongoose 操作mongodb

    nodejs操作mongodb可以使用mongoose: Mongoose is a MongoDB object modeling tool designed to work in an async ...

  7. 浅析nodejs的buffer类(转)

    最近翻阅了node v0.10.4的buffer类的源代码,收获不少,也很久没有在cnode上发表文章了,想把一些收获分享给大家,有什么错误的地方希望大牛们指正啊. 前阵子有位rrestjs框架的使用 ...

  8. nodejs之Buffer

    Buffer是什么? 简单点理解,buff就是固定长度的uint8array.(es6已实现TypedArray). 由于是固定长度所以没有了splice,concat方法. 由于是固定类型所以没有了 ...

  9. nodejs 循环中操作需要同步执行解决方案

    最近用nodejs做了个针对某网站的小爬虫.干坏事得低调对吧,不能同时开太多的网络访问,结果各种回调/循环虐的心力交瘁. 经过了n次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...

随机推荐

  1. C#Web从0到1—创建一个web并从VS集成的SQLlocalDB数据库中查询数据

    软件说明: VS2017,腾讯云服务器10元1个月,系统Win2012 R2标准版 第一步:建立第一个网页 建立工程 建好后,可以打开View选项打开项目资源浏览器和工具箱,后文会多次用到这两个版面 ...

  2. gitlab的ssh key有2个

    Gitlab添加SSH key可以pull不能push的问题 最后解决的是 使用http去clone pull  提交 没用ssh.就是需要输入密码

  3. Python基础(十三) 为什么说python多线程没有真正实现多现程

    Python中的多线程没有真正实现多现程! 为什么这么说,我们了解一个概念,全局解释器锁(GIL). Python代码的执行由Python虚拟机(解释器)来控制. Python在设计之初就考虑要在主循 ...

  4. python操作wifi

    python连接wifi需要使用pywifi包,可以用pip install pywifi安装 1.导入包 import pywifi,time #保存包中写义的常量 from pywifi impo ...

  5. Servlet Analysis

    @WebServlet("/cdiservlet") //url映射 public class NewServlet extends HttpServlet { private M ...

  6. 本地资源_Asset

    数据 using System.Collections.Generic; using UnityEngine; public enum Enum_Test { A, B, C, } [System.S ...

  7. Ansible学习实战手记-你想要知道的可能都在这里了

    最近接触了ansible工具,查找了一些资料,也做了一些总结.希望能给刚接触的新手带来一些帮助. 此总结有实际例子,大部分也是从实践中用到才逐一总结的. 当然可能肯定一定会存在一些错误和纰漏,还望大家 ...

  8. 用java生成32位全球唯一的id编号

    GUID是一个128位长的数字,一般用16进制表示.算法的核心思想是结合机器的网卡.当地时间.一个随即数来生成GUID.从理论上讲,如果一台机器每秒产生10000000个GUID,则可以保证(概率意义 ...

  9. Class_fourh_异常总结

    使用try,catch,finally.检查指点检查点是否错误: try里填入监测的内容 catch 小括号里放类型错误  判断try里出现的错误是哪一类错误 中括号里放 输出内容 在控制台上输出错误 ...

  10. 配置cron定时任务

    题:配置一个 cron 任务用户 natasha 必须配置一个定时执行任务,每天在本地时间 14:23 时执行命令* /bin/echo hiya 答: # 方法1 # su - natasha # ...