zoukankan      html  css  js  c++  java
  • node.js里的buffer常见操作,copy,concat等实例讲解

    //通过长度构建的buffer内容是随机的
    var buffer=new Buffer(100);
    console.log(buffer);
    //手动清空buffer,一般创建buffer不会清空
    buffer.fill(0);
    //通过字符串创建buffer
    //字符串具有不变性
    
    var str="阿尼";
    var buffer=new Buffer(str);
    console.log(buffer)
    
    // 通过数据创建 ,一般这种方式用的较少
    var buffer=new Buffer([0,255]);
    console.log(buffer);
    
    //代表的是内存,引用
    //数组的slice是浅拷贝
    let ary=[1,2,3];
    let ary1=[ary,100,200];
    let newAry=ary1.slice();
    ary[0]=500;
    console.log(newAry);
    // 深拷贝 ,指的是对象中里面存的对象和以前的对象毫无关系,但长的一样
    var obj={a:1};
    console.log([obj]===[{a:1}])
    // 浅拷贝 ,里面存放的内容和以前的是同一个地址
    var obj={a:1};
    console.log([obj]===[obj])
    
    var ee=Object.assign({w:1},{a:{a:1}}) //浅拷贝 将两个对象合成一个新的对象
    console.log(ee);
    //JSON.parse(JSON.stringify({a:{a:1}})); //深拷贝
    
    //buffer存放的都是内存地址,所有slice不会返回一个新的buffer
    var buffer=new Buffer([1,2,3]);
    var newBuffer=buffer.slice(0,1);
    newAry[0]=100;
    console.log(buffer);
    
    //
    var buf1=new Buffer('音乐');
    var buf2=new Buffer('啦啦');
    var bigBuffer=new Buffer(12);
    //拷贝
    buf1.copy(bigBuffer,0);
    buf2.copy(bigBuffer,buf1.length);
    console.log(bigBuffer.toString()) ;//可以调用toString方法转为字符
    
    //buffer concat
    //合并两个buffer
    let ww=Buffer.concat([buf1,buf2]).toString();
    console.log(ww);
    //合并两个buffer
    Buffer.myConcat=function (list,totaLength) {
        //totaLength 是否传递,如果传递用传递的长度构建一个buffer
        //如果没有长度。循环list算出总长度,构建一个大buffer
        //循环list将每一个小buffer拷贝到大buffer上
        //如果长度过长,可以截取有效的长度,返回大buffer
        if(typeof totaLength=='undefined'){
            totaLength=list.reduce((per,next)=>{
                return per+next.length;
            },0);
            let buffer=new Buffer(totaLength);
            let index=0;
            list.forEach(item=>{
                item.copy(buffer,index)
                index+=item.length;
    
            });
            console.log(index);
            return buffer.slice(0,index);
        }
    }
    console.log(Buffer.myConcat([buf1,buf2]).toString());
  • 相关阅读:
    django media配置
    django model项目外操作
    django 快捷代码提示
    django静态文件路径配置
    selenium爬取网易云
    selenium
    pyquery
    beautifulsoup
    Kafka与.net core(三)kafka操作
    Oracle 日期类型timestamp(时间戳)和date类型使用
  • 原文地址:https://www.cnblogs.com/null11/p/7509352.html
Copyright © 2011-2022 走看看