nodeJs的Buffer操作
再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操作的更多相关文章
- nodejs: 理解Buffer
学习nodejs中buffer这一章,有一段写到buffer的拼接,其中一段源码非常优美,特拿来与大家共享. var chunks = []; var size = 0; res.on('data', ...
- Nodejs通过Thrift操作hbase卡住原因分析及与javascript的垃圾回收机制的关系
在最近使用Nodejs通过Thrift操作hbase的时候写了个脚本,不断发送http请求,从而取得hbase下所需的数据,但是在run的过程中for循环并没有执行完全,在执行一部分后会卡住,就再也进 ...
- 大熊君大话NodeJS之------Buffer模块
一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...
- NodeJS中Buffer模块详解
一,开篇分析 所谓缓冲区Buffer,就是 "临时存贮区" 的意思,是暂时存放输入输出数据的一段内存. JS语言自身只有字符串数据类型,没有二进制数据类型,因此NodeJS提供了一 ...
- Nodejs·理解Buffer
Node里面的Buffer其实就是用于网络请求.文件读取等等操作,而且是分配在堆外,不会占用堆内的内存,这也是因为本来V8的内存就很小,如果读取大文件,那就...... 之前有看过Logstash的B ...
- nodejs 使用mongoose 操作mongodb
nodejs操作mongodb可以使用mongoose: Mongoose is a MongoDB object modeling tool designed to work in an async ...
- 浅析nodejs的buffer类(转)
最近翻阅了node v0.10.4的buffer类的源代码,收获不少,也很久没有在cnode上发表文章了,想把一些收获分享给大家,有什么错误的地方希望大牛们指正啊. 前阵子有位rrestjs框架的使用 ...
- nodejs之Buffer
Buffer是什么? 简单点理解,buff就是固定长度的uint8array.(es6已实现TypedArray). 由于是固定长度所以没有了splice,concat方法. 由于是固定类型所以没有了 ...
- nodejs 循环中操作需要同步执行解决方案
最近用nodejs做了个针对某网站的小爬虫.干坏事得低调对吧,不能同时开太多的网络访问,结果各种回调/循环虐的心力交瘁. 经过了n次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...
随机推荐
- jQuery 中的 39 个技巧【申明:来源于网络】
jQuery 中的 39 个技巧[申明:来源于网络] 地址:http://blog.csdn.net/zhongqi2513/article/details/53704812?ref=myread
- WebService,ESB笔记
一.WebService是什么? WebService,是RPC的一样实现方式. RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算 ...
- tensorboard使用过程错误记录
首先代码如下: def word_vis(self,file,txtname):#生成的模型存放的地址:word_vismodel'+file为新建的文件夹名 txtname是通过word2vec生成 ...
- session_unset 与 session_destroy 区别
session_unset() 释放当前在内存中已经创建的所有$_SESSION变量,但不删除session文件以及不释放对应的session id session_destroy() 删除当前用户对 ...
- 使用Vivado初探ZedBoard的OLED驱动
一.原理简介 Vivado版本:2016.2 OLED型号:128*32的UG-2832HSWEG04 ZedBoard的OLED部分电路原理图如下:(需要我们关心的是我用红色椭圆标注出来的3处,一共 ...
- mysql如何给字母数字混合的字段排序?
mysql> select * from t_SpiritInside; +------+ | col | +------+ | s1 | | s2 | | s11 | | s12 ...
- Oracle——trunc()函数的使用
trunc是oracle数据库中一种格式化函数. 1.处理日期 1.1.当年第一天: SELECT TRUNC(SYSDATE,'YYYY') FROM DUAL; SELECT TRUNC(SYSD ...
- python数据结构-如何让字典有序
如何让字典有序 问题举例: 统计学生的成绩和名次,让其在字典中按排名顺序有序显示,具体格式如下 {'tom':(1, 99), 'lily':(2, 98), 'david':(3, 95)} 说明 ...
- qrcode插件生成二维码
<!DOCTYPE html> <html> <head> <meta name="viewport" content="wid ...
- 53.CSS---CSS水平垂直居中常见方法总结
CSS水平垂直居中常见方法总结 1.元素水平居中 当然最好使的是: margin: 0 auto; 居中不好使的原因: 1.元素没有设置宽度,没有宽度怎么居中嘛! 2.设置了宽度依然不好使,你设置的是 ...