zoukankan      html  css  js  c++  java
  • nodejs_buffer.concat

    语法:Buffer.concat(list,totalLength);

    • list:要合并的Buffer数组,是必须的参数。

    • totalLength:合并后的list的Buffer实例的长度,是非必需的参数。

    • 返回值:返回合并后的新的Buffer实例的长度。如果list没有提供值或者totalLength为0则返回0;

    提供totalLength与否的区别:不提供这个值,程序需要花费时间另行计算新的Buffer实例的总长度。提供后该值会强制转换为无符号整数。新的Buffer实例的长度最终由该值决定

    
    const buf1=Buffer.alloc(10);
    const buf2=Buffer.alloc(14);
    const buf3=Buffer.alloc(18);
    const totalLength=buf1.length+buf2.length+buf3.length;
    
    console.log(totalLength);//42
    
    const bufA=Buffer.concat([buf1,buf2,buf3],totalLength);
    console.log(bufA);//<Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 ///00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
    console.log(bufA.length);//42
     
    //新创建的Buffer的长度取决于Buffer.concat的第二个参数的值。
    const bufB=Buffer.concat([buf1,buf2,buf3],(totalLength-40));
    console.log(bufB);//<Buffer 00 00>
    console.log(bufB.length);//2
    

    Buffer.concat:

    Buffer.concat = function (list, length) {
        if (!Array.isArray(list)) {
            throw new Error('Usage:Buffer.concat(list,[length])');
        }
        //list值不为数组的情况
    
        if (list.length === 0) {
            return new Buffer(0);
        } else if (list.length === 1) {
            return list[0];
        }
        //length值为0的情况返回一个不包含任何项的buffer实例
        //length值为1的情况下返回一个仅包含list数组第一项的buffer实例
    
        if (typeof length !== 'number') {
            //对于length不为undefined的情况,即length值没有被写入或者错误写入
            length = 0;
            for (let i = 0; i < list.length; i++) {
                var buf = list[i];
                length += buf.length;
            }
        }
    
        var buffer = new Buffer(length);
        var pos = 0;
        for (let i = 0; i < list.length; i++) {
            var buf = list[i];
            buf.copy(buffer, pos);
            pos += buf.length;
        }
        return buffer;
    };
    
  • 相关阅读:
    HTML中的target(_self,_blank)用法总结
    实用且不花哨的js代码大全
    C#操作Excel文件暨C#实现在Excel中将连续多列相同数据项合并
    ASP.NET操作EXCEL
    sql分页存储过程(汇总)
    Jquery plugin(多文件上传)
    使用 Anthem.NET 的常见回调(Callback)处理方式小结
    NET开发人员必知的八个网站
    用jQuery合并表格中相同文本的相邻单元格(一)
    Sigma Grid(纯javascript开发的Ajax数据表格,超级强大)
  • 原文地址:https://www.cnblogs.com/Syinho/p/12612739.html
Copyright © 2011-2022 走看看