• NodeJS缓冲区


    NodeJS缓冲区

    JavaScript语言本身在I/O时只有字符串数据类型,没有二进制数据类型,但在处理流数据时,必须用到二进制数据,因此在Node中,定义了一个Buffer类作为存放二进制数据的缓冲区

    缓冲区存放与内存中

    创建

    // 创建长度为5字节的Buffer实例
    var buf = new Buffer(5);
    console.log(buf); //<Buffer 00 00 00 00 00>
    // 可以用数组指定buffer内容
    var buf = new Buffer([10,20,30,40,50]);
    console.log(buf); //<Buffer 0a 14 1e 28 32>
    // 字符串方式创建,默认编码方式为utf-8
    var buf = new Buffer("hello world!","utf-8");
    console.log(buf); //<Buffer 68 65 6c 6c 6f 20 77 6f 72 6c 64 21>
    

    写入字符串

    // 创建长度为5字节的Buffer实例
    var buf = new Buffer(5);
    // buffer空间不足,只会写入前面部分
    buf.write("hello world");
    console.log(buf.toString()); //hello world
    

    写入整数,浮点也可以,要用writeInt,writeDouble之类

    读取数据

    var buf = new Buffer(3);
    for(var i = 0; i<buf.length; i++){
        buf[i] = i + 65;
    }
    // 转为字符串
    console.log(buf.toString());
    // 转为JSON对象
    console.log(buf.toJSON());
    
    /*输出*/
    ABC
    { type: 'Buffer', data: [ 65, 66, 67 ] }
    

    缓冲区合并

    var buf1 = new Buffer("hello");
    var buf2 = new Buffer(" ");
    var buf3 = new Buffer("world!");
    // 使用concat拼接,可以再加一个最大长度的限制
    var result = Buffer.concat([buf1, buf2,buf3]);
    console.log(result.toString());
    
    /*输出*/
    hello world!
    

    缓冲区比较

    var buf = new Buffer('abc');
    // 大于的结果是1
    console.log(Buffer.compare(buf,new Buffer('a')));
    // 等于的结果是0
    console.log(Buffer.compare(buf,new Buffer('abc')));
    // 小于的结果是-1
    console.log(Buffer.compare(buf,new Buffer('bBc')));
    

    缓冲区复制

    var buf1 = new Buffer('abc');
    var buf2 = new Buffer(buf1.length); // 新建另一个对象
    var buf3 = buf1; // 指向同一个对象,浅复制
    
    buf1.copy(buf2); // 深复制
    buf1[0] = 65; //'A'
    
    console.log(buf1.toString());
    console.log(buf2.toString());
    console.log(buf3.toString());
    
    /*输出*/
    Abc
    abc
    Abc
    

    缓冲区裁剪

    var buf1 = new Buffer('hello world');
    var buf2 = buf1.slice(1,3); //取[1:3)中的内容
    buf2[0] = 65; //'A',注意是浅复制
    console.log(buf1.toString());
    console.log(buf2.toString());
    
    /*输出*/
    hAllo world
    Al
    
  • 相关阅读:
    openldap
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P1200 [USACO1.1]你的飞碟在这儿Your Ride Is He…
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P2141 珠心算测验
    Java实现 洛谷 P1567 统计天数
    Java实现 洛谷 P1567 统计天数
  • 原文地址:https://www.cnblogs.com/fanghao/p/7812956.html
Copyright © 2020-2023  润新知