标签归档:buffer

Node.js Buffer对象

> Buffer对象创建
在Node.js中,Buffer类是一个可以在任何模块中被利用的全局类,不需要为该类的使用而加载任何模块。

//1 
//size表示多少字节
var buf = new Buffer(size)		

// 2 数组值
var buf = new Buffer([1,2,3]);

// 3 用指定编码的字符串填充,编码默认utf8,一般有ascii base64 hex
var buf = new Buffer(str, [encoding]);

//用value进行填充,指定段
buf.fill(value, [offset], [end]);	

被创建的Buffer对象拥有一个length属性,属性值为缓存区大小。

>字符串长度与缓存区的长度
字符串长度以单个字符作为单位(可能占用多个字节),缓存区以字节为单位。可以使用下标语法取出字符串或缓存区中的内容,比如str[2],buf[2],一个是取字符,一个是取字节。

字符串对象有可用于搜索字符串的indexOf、match、search方法,但是Buffer对象没有,它有一个slice方法(是指字符串和Buffer都有),不过它取的数据是字节,并且不是值拷贝(引用原来数据),所以如果对slice的结果进行修改,对应的Buffer对象的值也会被修改。

> Buffer对象与字符串对象之间的相互转换
可用buf.toString([encoding],[start],[end])来转换为指定编码(默认utf8)的字符串。

要向已经创建的Buffer对象中写入字符串,这时可以使用该Buffer对象的write方法:

buf.write(string, [offset], [length], [encodeing]);

注意和fill方法的区别。

> Buffer类的类方法

// 判断是否是Buffer对象
Buffer.isBuffer(obj);

//使用byteLength方法计算一个指定字符串的字节数
Buffer.byteLength(string, [encode]);

//用于将几个Buffer对象结合创建为一个新的Buffer对象
Buffer.concat(list,[totalLength])

//检测一个字符串是否为一个有效的编码格式字符串
Buffer.isEncoding(encoding)