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次的百度\哥哥后终于拼出了自己要的功能.不敢独享分享出来以供大家参考. ...
随机推荐
- lower_bound && upper_bound
用lower_bound进行二分查找 ●在从小到大排好序的基本类型数组上进行二分查找. 这是二分查找的一种版本,试图在已排序的[first,last)中寻找元素value.如果[first,last ...
- nginx入门与实战 安装 启动 配置nginx Nginx状态信息(status)配置 正向代理 反向代理 nginx语法之location详解
nginx入门与实战 网站服务 想必我们大多数人都是通过访问网站而开始接触互联网的吧.我们平时访问的网站服务 就是 Web 网络服务,一般是指允许用户通过浏览器访问到互联网中各种资源的服务. Web ...
- 01day
01 cpu 内存 硬盘 操作系统 CPU:中央处理器,相当于人大脑. (运行速度飞机) 内存:临时存储数据. 8g,16g, (高铁) 1,成本高. 2,断电即消 ...
- maven跳过单元测试-maven.test.skip和skipTests的区别
1. 介绍 -DskipTests,不执行测试用例,但编译测试用例类生成相应的class文件至target/test-classes下. -Dmaven.test.skip=true,不执行测试用例, ...
- 12.1-uC/OS-III调度的内部实现
1.调度的内部实现通过这两个函数完成调度功能: OSSched()和OSIntExit().OSSched()在任务级被调用, OSIntExit()在中断级被调用.这两个函数都在OS_CORE.C中 ...
- LINUX PID 1和SYSTEMD
LINUX PID 1和SYSTEMDhttp://coolshell.cn/articles/17998.html 要说清 Systemd,得先从 Linux 操作系统的启动说起.Linux 操作系 ...
- 使用Sqlserver事务发布实现数据同步(zhuanqian)
事务的功能在sqlserver中由来已久,因为最近在做一个数据同步方案,所以有机会再次研究一下它以及快照等,发现还是有很多不错的功能和改进的.这里以sqlserver2008的事务发布功能为例,对发布 ...
- Python requests库如何下载一个图片资源
原文地址https://blog.csdn.net/u011541946/article/details/77700074 前面一篇文章介绍了response对象的一些常用API,也已经提到,我们的重 ...
- gateway + jwt 网关认证
思路: 全局过滤器对所有的请求拦截(生成token有效期30分钟,放入redis设置有效期3天.3天之类可以通过刷新接口自动刷新,超过3天需要重新登录.) 前端在调用接口之前先判断token是否过期( ...
- 去掉vim的BELL提示音
title: date: 2017-11-09 15:07:08 tags: vim categories: 开发工具 --- 在vi/vim中使用 :set noeb 意思是noerrorbells ...