zoukankan      html  css  js  c++  java
  • 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输出是多少,什么条件下是不能输出的!

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

  • 相关阅读:
    Linux异常现场--pt_regs浅析
    内核调试--确认结构体的size和结构体成员的偏移
    Linux内核中root_domain的建立与初始化
    solr学习笔记-全量更新与增量更新,去除html标签
    oracle 替换clob里面的某个特定的字符串
    oracle重置序列从1开始
    oracle提取汉字拼音首字母
    layer.open的yes函数中获取弹出层(子集iframe)中的元素或参数
    java.util.Date日期时间工具类
    js操作将数字转换成 , 逗号分割的字符串并追加‘万’字
  • 原文地址:https://www.cnblogs.com/luoliang/p/4136306.html
Copyright © 2011-2022 走看看