如何使用node中的buffer

介绍:Buffer类是一个全局类,是一个比较罕见不需要require( ‘buffer’ )就可以使用的类,Buffer类似与数组也有length, 它里面的元素为16进制的两位数,即 0-255的数值,大小一经设置不可改变。

作用: 用来处理二进制数据。

一、创建一个Buffer类有三种方法
1.new Buffer( size )
  size是一个长度或者说是空间大小,number类型;
为buffer分配5个空间大小,里面的内容是五个随机填充的字节,长度以内的下标对应项能改变,不能像数组改变大小; 
 
2.new Buffer( Array );
  Array是一个字节数组
  
3.new Buffer( string, encoding );
  第一个传的是字符串,第二个是字符编码的类型;不同编码把字符串转换成字节效果不一样;
默认情况下编码类型是utf-8,一个字母和数字占1个字节,一个汉字占3个字节,buffer支持的编码类型有7种:
     1.ascii   2.utf8  3.utf16le 4.ucs2  5.base64  6.binary  7.hex
 
二、Buffer Api 
1. buf.write(string, [offset], [length], [encoding])
  string String类型 - 将要被写入 buffer 的数据
  offset Number类型, 可选参数,从buffer的第几位开始写入
  length Number类型, 可选参数, 写几个到buffer对象中
  encoding String类型, 可选参数, 默认: 'utf8'
 
2. buf.toString([encoding],[start],[end])
  encoding String类型, 可选参数, 默认: 'utf8'
  start Number类型, 可选参数,从第几位开始转变
  end Number类型, 可选参数, 转变到第几位,不包括结束位
 
3. buf.slice([start],[end])    类似与数组的slice

  start Number类型, 可选参数,从第几位开始切

  end Number类型, 可选参数, 切到第几位,不包括结束位

**该方法返回的是一个新的bf对象,切取的片段与老的buffer引用的是同一地址,对其中任何一个bf对象进行修改,另外一个bf也会改变;

4. buf.toJson([start],[end])  返回一个 JSON表示的Buffer实例

   

5.  buf.copy(targetBuffer, [targetStart], [sourceStart], [sourceEnd])

  targetBuffer  - 新的Buffer对象

  targetStart Number类型, 可选参数,从新的buffer的第几位开始写入

  sourceStart Number类型, 可选参数, 从老bf的第几位开始拷贝

  sourceEnd Number类型, 可选参数, 从老bf的第几位结束拷贝,不包含结束位

6.  buf.fill(string,strat,end)

  string, 填充的字符串

  start 默认是0, 从哪个地方开始被填充

  end, 可选参数 默认是bf.length, 填充到哪,不包括结束位

三、buffer提供的类方法 

1. Buffer.isEncoding('编码’),判断bf是否支持该编码

 

2. Buffer.isBuffer(元素),判断该元素是否是bf对象

 

3.Buffer.byteLength(‘字符串’,'字符编码’),返回的是字符串的字节长度

 

4.Buffer.concat(字节数组 ,所有bf的总字节长度)  返回一个新的bf对象

 

学习来源 => http://www.imooc.com/learn/637   

今天就写到这了,还有buffer的著名的8kb载体,下次在写^_^    大家可以去看看这篇博客  http://www.cnblogs.com/time-is-life/p/5385855.html

posted @ 2016-04-26 18:52  BigPanda  阅读(1005)  评论(0编辑  收藏  举报