产生背景: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之后拼接。
网友评论