Buffer模块

产生背景:node需要处理网络协议,操作数据库,处理图片,文件上传等,需要大量的二进制操作。

1.实例化一个buffer对象

var buf = new Buffer([ox68, ox65, ox6c, ox6f])               

里边的二进制是数组形式

var buf = new Buffer(10)   

生成一个长度为10的Buffer对象

2.Buffer二进制与字符串的转换

(1)转化成字符串:buf.toString('utf-8')

(2)转化成buffer二进制:new Buffer('hello')   或   new Buffer('hello', 'utf-8')

3.buffer对象操作

(1)buf.length    获取Buffer对象的长度

(2)var Bup = bin.slice(2)  bin是从位置2开始开始切割直至结束,Bup是新的buf对象

(3)合并buffer对象

1) var buf1 = new Buffer([0x01, 0x02])

    var newBuf = buf1.concat(buf)

2) 拼接Buffer

    res.on('data', function(chunk){

    })

其中参数chunk是Buffer对象,直接用+拼接会产生乱码,对于宽字节字符可能导致乱码产生。

解决方法:第一种,在可读流中setEncoding方法,该方法让data事件传递不再是Buffer对象,而是编码后的字符串;

第二种,将Buffer对象暂列数组中,组装完成一个大Buffer之后拼接。

你可能感兴趣的:(Buffer模块)