zoukankan      html  css  js  c++  java
  • 处理数据I/O之Buffer

    一:Buffer对象的创建方式:

      (1):概述:Node.js中的Buffer缓冲区模块支持开发者在缓冲区结构中创建、读取、写入和操作二进制数据,该模块是全局性的。

      (2):通过Buffer构造函数:

        1:参数可以是,字节,数组,buffer对象,字符串。等

        

    /*
    使用构造函数在缓存区创建一个内存为8个字节的空间:
    */
    try{
    var size = 8;
    var buf = new Buffer(size);
    //传入数组方式创建Buffer实列
    var buf_arry = new Buffer([5,10,15,20]);
    //传入字符串和编码
    var buf_str = new Buffer("hello","UTF-8");
    }
    catch(e)
    {
        console.log(e);
    }
    输出:

    D:Program Files odejschapter>node Buffer构造函数.js
    <Buffer 05 0a 0f 14>
    (node:7456) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.

     

      2:向缓存区写入内容:

      

    /*
    写入缓存区:buf.write(string,offset,length,encoding)
        string:写入的字符串
        offset:写入的位置,即索引
        length:长度.
    */
    console.log('创建一个10字节的缓存区');
    var buf = new Buffer(10);
    console.log('缓存区的大小'+buf.length);
     var L = buf.write('a',0,1,'utf-8'); //write返回的内容为实际写入的大小
    console.log("write的返回值"+L);
    console.log("缓存的内容"+buf);
    //在ascii编码表中字母a的十六进制数表示为61,
    //占用一个字节,b表示为62,占用一个字节。
    buf.write('b',1,1,'ascii');
    输出:

    D:Program Files odejschapter>node 写入缓存区.js
    创建一个10字节的缓存区
    缓存区的大小10
    write的返回值1
    缓存的内容a
    (node:2256) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.

     3:读取缓存区内内容:

    var buf = new Buffer(26); //创建一个26字节地内存对象
    for(var i = 0;i<26;i++)
    {
        buf[i] = i+97;
    }
    //以ascil编码输出:
    console.log(buf.toString('ascii'));
    //输出前五个字节
    console.log(buf.toString('ascii',0,5));
    //输出从索引5开始到10个字节
    console.log(buf.toString('utf-8',5,15));
    输出:

    D:Program Files odejschapter>node 读取缓存区.js
    abcdefghijklmnopqrstuvwxyz
    abcde
    fghijklmno
    (node:7416) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.

    4:拼接缓存区

    /*
    buf.concat(list[buf1,buf2,.....,totalLength])
    totalLength用于指定合并后Buffer对象的总长度。
    */
    var buf1 = new Buffer('会当凌绝顶');
    var buf2 = new Buffer('一览众山小');
    var buf4 = new Buffer(',');
    //拼接缓冲区
    var buf3 = Buffer.concat([buf1,buf4,buf2,],40);
    console.log(buf3.length); //拼接后地长度
    console.log(buf3.toString('utf-8'));
    输出:

    D:Program Files odejschapter>node 拼接缓存区.js
    40
    会当凌绝顶,一览众山小
    (node:852) [DEP0005] DeprecationWarning: Buffer() is deprecated due to security and usability issues. Please use the Buffer.alloc(), Buffer.allocUnsafe(), or Buffer.from() methods instead.

    5:使用buffer对象作为构造函数参数进行上述操作.

    6:使用数组作为构造函数参数进行上述操作.

  • 相关阅读:
    CRF++条件随机场
    list 函数
    转:Java Map 排序定义
    C#统计文本单词个数2
    转:求多边形的面积 算法几何
    C#统计单词词频
    C#动态数组ArrayList
    转:java写一个方法实现统计一条英文语句忠每个单词的个数
    C#统计文本单词的个数
    统计文本单词个数,并个数大小按序排列 C#
  • 原文地址:https://www.cnblogs.com/1314bjwg/p/12499442.html
Copyright © 2011-2022 走看看