• 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
    
  • 相关阅读:
    Java基础(五):数组和Java方法
    Java基础(四):Java Number & Math 类、Character 类、String 类、StringBuffer & StringBuilder 类
    Java基础(三):修饰符、运算符、循环结构和分支结构
    Java基础(二):基本数据类型和变量类型
    Java基础(一):简介
    变量声明置顶规则、函数声明及函数表达式和函数的arguments属性初始化
    JS操作JSON常用方法
    站点的良好体验在网络优化中极为重要
    JVM基础(二) 实现自己的ClassLoader
    [DLX精确覆盖] hdu 3663 Power Stations
  • 原文地址:https://www.cnblogs.com/fanghao/p/7812956.html
Copyright © 2020-2023  润新知