nodejs buffer

1.事件模块 var events=require(‘events’);EventEmitter类来绑定监听事件

     eventEmitter.on('eventname',eventHandler);//绑定事件及事件处理函数

     触发事件

     eventEmitter.emit("eventname")//触发事件

     on(event,listener)//为指定事件注册一个监听器,

     once(event,listener)//为制定事件注册一次监听器,监听器最多触发一次,触发后立刻解除该监听器

     removeListener(event,listener);//移除指定事件的监听器

     removeAllListeners([event])//移除所有事件的所有监听器

     setMaxListeners(n)//默认情况下eventEmitters添加的监听器超过10个就回输出警告              setMaxListeners用于提高监听器的默认值的数量

     listeners(event)//返回指定的事件的监听器数组

     emit(event,[arg1],[arg2])//按照参数的顺序执行每个监听器

 

2. Buffer(缓冲区)

    js语言自身只有字符串数据类型没有二进制数据类型

    buffer用来创建一个专门存放二进制数据的缓存区

    创建buffer类

    var buf = new buffer(10);//创建长度为10字节的buffer实例

    var but  = new buffer([10,20,30,40,50]);//通过制定的数组创建buffer实例

    var buf = new buffer("wwww.baidu.com","utf-8");//通过一个字符串创建buffer实例

    !:utf-8默认的编码方式,此外还支持ascii utf8 utf16le ucs2 bass64 和 hex

写入缓冲区

   buffer.write(string[,offset[,length]][,encoding])

   string - 写入缓冲区的字符串

   offset - 缓冲区开始写入的索引值,默认0

   length - 写入的字节数,默认是buffer.length

   encoding - 使用的编码 默认utf8

   var buf = new buffer(200);

        或buf = new buffer('abcedededededede',utf-8);

         len = buf.write('de',8,3,utf-8);

         console.log(len);

 

从缓冲区读取数据

    语法 buffer.toString([encoding[,start[, end]]])

           encoding - 编码

           start - 开始读取的索引位置 默认值0

           end 结束位置,默认为缓冲区结尾

           

buf = new buffer(26);
for(var i=0;i<26;i++){
    buf[i] = i +97;
}

console.log(buf.toString('ascii')); //输出:a-z26个字符
console.log(buf.tostring('ascii',0,5));//输出 abcde

  

将buffer 转换成json对象

     buffer.toJSON();

     var buf = new buffer('wwwhhhhh');

      var json = buf.toJSON(buf);

     console.log(json);

     输出二进制 [119,119,119,......]

   

缓冲区合并

    buffer.concat(list,totalLength);

    list - 用于合并的buffer对象数组列表

    totalLength - 指定合并后 buffer对象的总长度

返回一个多个成员合并的buffer对象的总长度

 

     

var buf1 = new buffer('dou');
var buf2 = new buffer(chuan);
var buf3 = buffer.concat([buf1,buf2]);
console.log('dayin'+buf3.toString(buf3,'utf-8'));
 //打印 dayin douchuan

  

        缓冲区比较

   buf.compare(otherbuffer);

   

var buf1 = new buffer('abc');
var buf2 = new buffer('abcde');
var result = buf1.compare(buf2);

if(result<0){
    console.log(buf1+在+buf2+之前);
}else if(result ==0){
   buf1+与+buf2+相同
}else{
    console.log(buf1+在+buf2 +之后);
}

  

 

拷贝缓冲区

     buffer.copy(targetBuffer,targetStart,sourceStart,sourceEnd);

     targetBuffer  - 要拷贝的buffer对象

     targetStart - 数字

     sourceStart -数字

      sourceEnd -数字 默认 buffer.length

 

var buf1 =  new buffer('abc');
var buf2 = new buffer(3);
buf1.copy(buf2);

console.log(buf2.toString());
 //输出abc

 

缓冲区裁剪

    buffer.slice(start,end);

    //返回一个新的缓冲区,它和旧缓冲区指向同一块内存

    var buf1 = new buffer("123456");

    var buf2 = buf1.slice(0,2);

    conosle.log(buf2.toString());

    //打印 12

 

缓冲区长度

    buf.length //返回buffer对象占据内存的长度

    buf[index]//获取或设置指定的字节

    buffer.equals(otherbuffer)//比较两个区域是否相等

    

 

    

 

posted on 2016-05-27 17:04  dcw  阅读(309)  评论(0)    收藏  举报

导航