zoukankan      html  css  js  c++  java
  • 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
    
  • 相关阅读:
    Ubuntu之修改用户名和主机名
    HM中CU,TU的划分
    BZOJ 3237([Ahoi2013]连通图-cdq图重构-连通性缩点)
    Introducing Regular Expressions 学习笔记
    kubuntu添加windows字体
    WISE安装程序增加注册控制
    Linux内核中常见内存分配函数(一)
    Linux内核中常见内存分配函数(二)
    Swift现实
    Android 5.0(L) ToolBar(替代ActionBar) 现实(四)
  • 原文地址:https://www.cnblogs.com/fanghao/p/7812956.html
Copyright © 2011-2022 走看看