Node.js API学习笔记(二)

本文发表于本人博客

    上一节笔记说到创建Buffer实例,这节继续讲Buffer。本节讲解下Buffer的一些静态方法、写入以及读取方法。

    Buffer.isEncoding(编码)判断nodejs是否支持此编码

    console.log(Buffer.isEncoding("gb2312"));//不管过程怎么node都不支持这个编码,死记
    console.log(Buffer.isEncoding("utf8"));  //true
    console.log(Buffer,isEncoding("ascii")); //true

  

    Buffer.isBuffer(obj) 判断obj对象是否是Buffer类型对象

    var str = "";
    var obj = new Buffer(100);
    console.log(Buffer.isBuffer(str));    //false
    console.log(Buffer.isBuffer(obj));    //true
 

      

    Buffer.byteLength(string,[encoding]) 获得指定编码(默认UTF8)下指定字符串所占的byte。注意utf8于ucs2不同

    var str = "独孤求败";
    var buf = new Buffer(str);
    console.log(Buffer.byteLength(str,"utf8"));    //12
    console.log(Buffer.byteLength(str));           //12
    console.log(Buffer.byteLength("abc"));         //3 
    console.log(Buffer.byteLength(str,"ucs2"));    //8
 

  

    Buffer的写入方法:writeXXX(value,offset,[noAssert])

    value:必须是整形或浮点;

    offset:写入的开始位置;

    noAssert:超出范围包异常,可省略;

    有如下方法:writeInt8(),writeInt16BE(),writeIntLE(),writeInt32LE(),writeInt32BE().注意writeInt8()只有这个而且是从默认是LE模式

    var buf = new Buffer(4);
    var data = 0x0c;//十六进制=12
    buf.fill();    //使用fill方法填充,差不多就是全部清零状态
    buf.writeInt8(data,0);
    console.log(buf);    //0c 00 00 00
    
    buf.fill();
    buf.writeInt16LE(data,0);//使用16位有符号 低到高存储
    console.log(buf);        //0c 00 00 00
    
    buf.fill();
    buf.writeInt16BE(data,0);//使用16位有符号 高到低存储
    console.log(buf);        //00 0c 00 00

   

    Buffer的读取方法readUInt8(offset,[noAssert]) 这个跟write是一一对应的!

    var buf = new Buffer(4);
    var data = 0x0c;
    buf.fill();
    buf.writeInt8(data,0);
    console.log(buf.readInt8(0));    //12 
    
    buf.fill();
    buf.writeInt16LE(data,0);
    console.log(buf.readInt16LE(0)); //12

   

    copy(targetBuffer,[targetStart],[sourceStart],[sourceEnd]) 从一个Buffer对象拷贝指定的位置到目标Buffer

    var sBuffer = new Buffer("独孤求败");
    var tBuffer1 = new Buffer(6);
    var tBuffer2 = new Buffer(9);
    sBuffer.copy(tBuffer1);
    sBuffer.copy(tBuffer2);
    console.log(tBuffer1.toString());    //独孤
    console.log(tBuffer2.toString());    //独孤求

  

    大家看到上面没,跟再上面的一段对比,就知道默认utf输出是3个字节一个中文哦!所以打印sBuffer的字节数是12.大家可以尝试下使用编码ascii输出是多少,什么条件下是不能输出的!

    这节课先到这里,感觉最近又没时间了,慢慢,坚持下去。

原文地址:https://www.cnblogs.com/luoliang/p/4136306.html