美文网首页
Buffer模块

Buffer模块

作者: 剁剁爷 | 来源:发表于2017-02-07 16:40 被阅读0次

    产生背景: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模块

          本文链接:https://www.haomeiwen.com/subject/bnhmittx.html