在Node.js中提供了Buffer类,经过Buffer类中的各类构造函数建立Buffer对象,从而实现将缓存区中的字节数据转换为字符串对象以及将缓存区中的字节数据与数值对象之间进行转换。javascript
1、建立Buffer对象java
Node.js中的Buffer类是一个全局类,也就是说Buffer类能够在任何模块中被使用,不须要为了使用Buffer类二加载任何模块。能够使用new关键字建立Buffer类的实例对象,在Buffer类中用于建立实例对象的构造方法有三种。 (1)第一种是只须要传入缓存区大小做为构造函数的参数建立实例对象,程序示例:数组
var buf = new Buffer(size); //size表示须要设置的缓存区的大小,以字节为单位
在建立Buffer类的实例对象以后,能够经过实例对象的length属性获取缓存区的大小。Buffer类的fill()方法能够用来初始化缓存区中的内容,程序示例:缓存
var buf = new Buffer(128); buf.fill(2, 2 ,10); //使用Buffer类的fill()方法初始化缓存区内容
fill()方法能够接受三个参数,第一个参数是必须指定的参数,表示被写入缓存区的内容。第二个参数为可选参数,表示从缓存区的第几个字节开始写入内容,默认是从缓存区开始的位置写入参数。第三个参数也是可选参数,表示向缓存区写入内容直到第几个字节为止,默认是将整个缓存区写满。 (2)Buffer类中提供的第二种建立实例的构造方法是将数组传入构造方法建立Buffer类的实例对象。程序示例:函数
var array = [1,2,3,4,5]; var buff = new Buffer(array); //将数组做为参数传入构造方法建立Buffer类的实例对象
程序运行截图:ui
(3)第三种建立Buffer类实例对象的方式是将字符串做为参数直接传入构造方法建立实例对象,程序示例:编码
var string = 'Hello World'; var buffer = new Buffer(string); //直接传入字符串建立Buffer类的实例对象
程序运行截图:3d
在使用字符串做为参数建立Buffer类的实例对象时,能够在构造函数中添加第二个参数指定字符编码格式,默认的字符编码格式是“utf8”。code
2、Buffer对象与字符串对象的转换对象
(1)使用Buffer对象的toString()方法将缓存区中的内容按照指定的字符编码格式转换成字符串对象,程序示例:
var buffer = new Buffer("Buffer对象与字符串对象之间的转换。"); console.log(buffer.toString("utf8", 6, 24));
程序运行截图:
toString()方法能够接受三个可选参数,第一个参数表示字符集编码格式,经过设置字符集编码格式能够将Buffer对象缓存区中的内容转换成指定的编码格式的字符串,默认的编码格式是“utf8”。第二个参数表示转换的起始位置,默认的起始位置是整个缓存区的开头。第三个参数表示转换的结束位置,默认的结束位置是缓存区的终点。 (2)使用Buffer类的write()方法能够向已经建立的Buffer对象中写入字符串。程序示例:
var buffer = new Buffer("我喜欢苹果。"); buffer.write("吃", 3, 3); console.log(buffer.toString());
程序运行示例:
(3)在Node.js中还能够使用StringDecoder对象将Buffer对象中的内容转换为字符串对象。与toString()的做用是相同的,程序示例:
var string_decoder = require("string_decoder"); var StringDecoder = string_decoder.StringDecoder; var decoder = new StringDecoder([encoding]); //encoding表示可设置字符集编码格式
(4)会用JSON.stringify()方法能够将Buffer对象缓存区中的内容转换为一个字符串,使用JSON.parse()方法能够将字符串转换为数组。 (5)使用Buffer对象的copy()方法能够将一个Buffer对象缓存区中的内容复制到另外一个Buffer实例对象的缓存区中。程序示例:
var buffer1 = new Buffer("明天是晴天。"); console.log(buffer1.toString()); var buffer2 = new Buffer("Hello World"); console.log(buffer2.toString()); buffer1.copy(buffer2, 4); console.log(buffer2.toString());
程序运行截图: