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之后拼接。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • https://nodejs.org/api/documentation.html 工具模块 Assert 测试 ...
    KeKeMars阅读 6,464评论 0 6
  • Node.js Buffer(缓冲区) JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在...
    FTOLsXD阅读 540评论 0 2
  • JavaScript对字符串处理十分友好,无论是宽字节还是单字节字符串,都被认为是一个字符串。Node中需要处理网...
    小母鸡叽叽叽阅读 408评论 0 0
  • Buffer是node的核心模块,开发者可以利用它来处理二进制数据,比如文件流的读写、网络请求数据的处理等。 Bu...
    自度君阅读 530评论 0 1
  • 在NODE中,应用需要处理网络协议、操作系统数据库、处理图片、接受上传文件等,在网络流和文件的操作中,需要处理大量...
    TaoGeNet阅读 2,161评论 0 2