zoukankan      html  css  js  c++  java
  • Node.js学习


    JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。但在处理像TCP流或文件流时,必须使用到二进制数据。

    因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。

    一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。


    创建Buffer类

    var buf = new Buffer(10)
    
    var buf = new Buffer([1,2,3,4,5])
    
    var buf = new Buffer("some string", "utf-8")   

      //utf-8 是默认的编码方式,此外它同样支持以下编码:"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex"。

     写入缓冲区

    buf.write(string[, offset[, length]][, encoding])
    
      //返回实际写入的大小。如果 buffer 空间不足, 则只会写入部分字符串

    从缓冲区读取数据

    buf.toString([encoding[, start[, end]]])
    
    实例
    
    buf = new Buffer(26);
    for (var i = 0 ; i < 26 ; i++) {
      buf[i] = i + 97;
    }
    
    console.log( buf.toString('ascii'));       // 输出: abcdefghijklmnopqrstuvwxyz
    console.log( buf.toString('ascii',0,5));   // 输出: abcde
    console.log( buf.toString('utf8',0,5));    // 输出: abcde
    console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 编码, 并输出: abcde

    将Buffer转换为JSON对象

    buf.toJSON()

    返回 JSON 对象

    缓冲区合并

    Buffer.concat(list[, totalLength])
    • list - 用于合并的 Buffer 对象数组列表

    • totalLength - 指定合并后Buffer对象的总长度

      实例

        var buffer1 = new Buffer("SSSS");

        var buffer2 = new Buffer("BBBB");

        var buffer3 = new Buffer.concat([buffer1, buffer2]);

        console.log(buffer.toString());    //输出 SSSSBBBB

    缓冲区比较

    buf.compare(otherBuffer);
    
    返回一个数字,表示 buf 在 otherBuffer 之前,之后或相同。
    
    实例
    var buffer1 = new Buffer('ABC');
    var buffer2 = new Buffer('ABCD');
    var result = buffer1.compare(buffer2);
    
    if(result < 0) {
       console.log(buffer1 + " 在 " + buffer2 + "之前");
    }else if(result == 0){
       console.log(buffer1 + " 与 " + buffer2 + "相同");
    }else {
       console.log(buffer1 + " 在 " + buffer2 + "之后");
    }

    拷贝缓冲区

    buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])
    
    无返回值
    
    实例
    var buffer1 = new Buffer('ABC');
    var buffer2 = new Buffer(3);
    buffer1.copy(buffer2);
    console.log("buffer2 content: " + buffer2.toString());

    缓冲区裁剪

    buf.slice([start[, end]])
    
    返回一个新的缓冲区,它和旧缓冲区指向同一块内存,但是从索引 start 到 end 的位置剪切。
    
    实例
    var buffer1 = new Buffer('runoob');
    var buffer2 = buffer1.slice(0,2);
    console.log("buffer2 content: " + buffer2.toString());   // ru

    缓冲区长度

    buf.length;
    
    返回 Buffer 对象所占据的内存长度。

    KEEP LEARNING!
  • 相关阅读:
    liunx-centos-基础命令详解(1) -主要内容来自 —https://www.cnblogs.com/caozy/p/9261224.html
    阿里云搭建香港代理服务器 shadownsocks
    ssh 操作 esxi 基本命令
    surpace pro 检测维修记录
    新的开始
    Linux就该这么学04学习笔记
    博客园添加旋转的正方体特效
    博客园添加鼠标动态线条
    day01 python初识、数据类型、流程控制
    Hadoop学习(1)-hdfs安装及其一些操作
  • 原文地址:https://www.cnblogs.com/roronoa-sqd/p/5397164.html
Copyright © 2011-2022 走看看