• 什么是buffer?


    
    

    Buffer 类的实例类似于整数数组,但 Buffer 的大小是固定的、且在 V8 堆外分配物理内存。 Buffer 的大小在被创建时确定,且无法调整。

    
    

    Buffer 类在 Node.js 中是一个全局变量,因此无需使用 require('buffer').Buffer


    #什么是buffer


    缓冲区Buffer 是暂时存放输入输出数据的一段内存

    js语言自身只有字符串数据类型,没有二进制数据类型,而处理TCP和文件流的时候,必须处理二进制数据

    nodejs提供了一个Buffer对象来提供对二进制数据的操作

    是表示固定内存分配的全局对象,也就是说要放到缓存区中的字节数据需要提前确定

    Buffer好比由一个八位字节组成的数组,可以有效的在javascript中存储二进制数据


    #什么是八位字节?

    字节byte是计算机存储时的一种计量单位,一个字节表示8位二进制数

    一个位就代表一个0或1,每8各位(bit)组成一个字节(byte)

    字节是网络传输信息的单位

    一个字节最大值十进制表示是255

    1 1 1 1 1 1 1 1 2的8次方减1

    一个单词是两个字节

    ASCII 码使用指定的7位或8位二进制数组合来表示128或256种可能的字

    # 定义buffer的三种方式

    编码是做翻译用的

    他是一个全局对象,不需要require和引用,里面存储的是二进制数字节

    第一种方式 new Buffer(size) size 是多少个字节,类似于数组中的length

    例:var buffer = new Buffer(1);//buffer的长度是1 ,长度固定之后不可以改变
      buffer[0] = 16;
      console.log(buffer); //<Buffer 0e>
      buffer[1] = 16;//长度固定之后不可以改变
      console.log(buffer);//<Buffer 0e>
    第二种方式 数组创建 new buffer(Array);

    例: var bufferArr = new Buffer([1,2,3]);//数组的长度就是buffer的长度
      console.log(bufferArr); // <Buffer 01 02 03>
      
    第三种方法 字符串创建 new Buffer(str,[encoding]);

    例:var bufferStr = new Buffer('刘'); //一个汉字是三个字节
      console.log(bufferStr);//<Buffer e5 88 98>

    #Buffer和字符串之间的转换

    字符串转换成Buffer
    var bufStr = new Buffer('刘诗雨');
    console.log(bufStr);
    //<Buffer e5 88 98 e8 af 97 e9 9b a8>
    Buffer转字符串

    bufStr.toString('utf8');
    console.log(
    bufStr.toString('utf8')
    );
    //刘诗雨

    #Buffer的常用方法

    1.
    合并Buffer Buffer.concat(list[, totalLength])
    var buf1 = new Buffer(1);
    buf1[0] = 1;
    var buf2 = new Buffer(2);
    buf2[0] = 2;
    buf2[1] = 3;
    var hebing = Buffer.concat([buf1,buf2]);//<Buffer 01 02 03> 默认不写的话是两个buffer合起来的长度
    hebing = Buffer.concat([buf1,buf2],3);//<Buffer 01 02 03>
    hebing = Buffer.concat([buf1,buf2],2);//<Buffer 01 02>如果长度小于两个buffer之和的长度则是几就留几个
    hebing = Buffer.concat([buf1,buf2],5);//<Buffer 01 02 03 00 00> 如果长度大于两个buffer之和的长度则后面的补0

    2. 复制 buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
    var buf11 = new Buffer('刘');
    var buf12 = new Buffer('诗');
    var buf13 = new Buffer('雨');
    var buffers = new Buffer(12);

    buf11.copy(buffers,0,0,3);
    console.log(
    buffers.toString('utf8',0,3)
    );//刘
    buf12.copy(buffers,3,0,3);

    console.log(
    buffers.toString('utf8',0,6)
    );//刘诗
    buf13.copy(buffers,6,0,3);

    console.log(
    buffers.toString('utf8',0,9)
    );//刘诗雨

    3.判断是否是Buffer.isBuffer

    console.log(
    Buffer.isBuffer(
    buffers)
    ); //true

    4.获取字节的长度 Buffer.byteLength

     console.log(Buffer.byteLength('刘诗雨'));//9  一个汉字是三个字节 一个英文字符是一个字节
     
     





    
    
  • 相关阅读:
    vue使用video.js解决m3u8视频播放格式
    小程序索引列表排序
    小程序实现图片上传,预览以及图片base64位处理
    小程序实现综合排序页面布局
    前端学习 html
    Linux Yum仓库介绍及服务端及客户端配置
    Saltstack 常用的模块及API
    KVM 克隆虚拟机
    KVM 虚拟机基本管理及常用命令
    Saltstack 操作目标,正则匹配,及组管理
  • 原文地址:https://www.cnblogs.com/qinmengjiao123-123/p/7196719.html
Copyright © 2020-2023  润新知