node学习之路(二)Buffer对象

来源:互联网 发布:国际网络加速器 编辑:程序博客网 时间:2024/06/06 20:51

在js中对于二进制数据没有进行很好的支持(前端中二进制数据用的较少)。

但是在出路TCP流和文件流数据时,二进制数据处理不可避免。因此node

定义了一个Buffer类来处理二进制数据流。


1.创建Buffer类

Buffer类和其他类的创建并无区别,只需要new其对象即可。

注:Buffer类有一个length属性,用来规定Buffer类的长度。

第一种:var buf=new Buffer(length)//可以使用buf.fill(vale,[offset],[end]);来初始化buf值

第二种:var buf=new Buffer(array)//可以直接传入一个数组

第三种:var buf=new Buffer(string,[encoding])//直接传入一个字符串形式来创建


2.字符串长度与缓存区的长度

Buffer的长度不一定与字符串的长度相同,Buffer的长度表示的是字节长度。

例:var buf=new Buffer("我是博客");

       console.log(buf.length);//12


3.Buffer与字符串之间的互相转换

Buffer类中有toString([encoding],start,end)的方法来讲Buffer转成字符串

参数1:指定转换后的编码格式。参数2:开始位置。参数3:结束位置。

Buffer对象的write(string,offset,length,[encoding])方法

参数1:写入Buffer的字符串,参数2:起始位置。参数3:长度。参数4:编码方式。


4.Buffer与JSON之间的相互转换。

Buffer转换成JSON对象:

var buf=new Buffer("我是博客");

jsonStr=JSON.stringify(bus);

JSON.parse(jsonStr);

JSON对象转换成Buffer对象

var buf 2=new Buffer(JSON.parse(jsonStr));


5.Buffer与数值对象之间的相互转换

buf.writeInt8(value, offset[, noAssert])//有符号的8进制数转换

buf.writeUInt8(value, offset[, noAssert])//无符号的8进制数转换

8可以为16 32 64...


6.Buffer类中常用的方法:
1)isBuffer(obj)用于判断对象是否是一个Buffer对象

2)byteLength(string,[encoding])判断传入的字符串的字节数

3)concat 连接两个buffer对象

4)isEncoding(encoding)用于检测一个字符串是否是一个有效的编码格式字符串。






原创粉丝点击