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());
node.js里的buffer常见操作,copy,concat等实例讲解的更多相关文章
- Node.js缓冲模块Buffer
前言 Javascript是为浏览器而设计的,能很好的处理unicode编码的字符串,但对于二进制或非unicode编码的数据就显得无能为力. Node.js继承Javascript的语言特性,同时又 ...
- 理解 Node.js 里的 process.nextTick()
有很多人对Node.js里process.nextTick()的用法感到不理解,下面我们就来看一下process.nextTick()到底是什么,该如何使用. Node.js是单线程的,除了系统IO之 ...
- Node.js文件系统、路径的操作详解
17173 17173 2 75 2014-12-12T05:06:00Z 2014-12-12T05:06:00Z 21 2735 15595 www.17173.com 129 36 18294 ...
- Node.js文件系统、路径的操作函数
Node.js文件系统.路径的操作函数 目录 Node.js文件系统.路径的操作函数 1.读取文件readFile函数 2.写文件 3.以追加方式写文件 4.打开文件 5.读文件,读取打开的文件内容到 ...
- Node.js系列:Buffer类的使用
客户端JavaScript中没有对二进制数据提供很好的支持.但是在处理TCP流或文件流时,必须要处理二进制数据.Node.js定义了一个Buffer类,用来创建一个专门存放二进制数据的缓存区. Buf ...
- Node.js之使用Buffer类处理二进制数据
Node.js之使用Buffer类处理二进制数据 Buffer类可以在处理TCP流或文件流时处理二进制数据,该类用来创建一个专门存放二进制数据的缓存区. 1. 创建Buffer对象 1.1 直接创建: ...
- 学废了系列 - WebGL与Node.js中的Buffer
WebGL 和 Node.js 中都有 Buffer 的使用,简单对比记录一下两个完全不相干的领域中 Buffer 异同,加强记忆. Buffer 是用来存储二进制数据的「缓冲区」,其本身的定义和用途 ...
- PHP中的__toString方法(实现JS里的链式操作)
_toString方法是在打印对象时自动调用的魔术方法,如果不声明会报以下错 Catchable fatal error: Object of class String could not be co ...
- node.js模块之Buffer模块
http://nodejs.org/api/buffer.html Pure JavaScript is Unicode friendly but not nice to binary data. W ...
随机推荐
- synchronized(4)修饰语句块之:synchronized(this)
synchronized(this) 此时,线程获得的是对象锁.例如: public class Thread8 extends Thread { public void sync_fun() { s ...
- java之java.sql.SQLException: ResultSet is from UPDATE. No Data.
问题解释:java调用存储过程的时候,查询结果不能通过ResultSet来查询,需要通过CallableStatement来查询, 比如: ResultSet rs = callableStateme ...
- Oracle Mysql的jdbc连接
Oracle和MySql的jdbc或连接池中的连接,写下来以便随时参考 Oracle: driverClassName=oracle.jdbc.driver.OracleDriver url=jdbc ...
- js 将XML字符串解析成XML文档 --- attribute construct error--- 空白字符与空格问题
最近在做xml在线编辑器,遇到一个字符串解析成xml文档的问题,记录一下. 原始xml内容读取自xml文档 <label class="test" id="labe ...
- Node.js——url模块
url模块通过api可以将get提交的参数方便的提取出来
- linux 后台进程
1.进程放入后台 ctrl+z 进程放入后台 暂停执行 2.进程放入后台执行 bg % n 或者 bg n 进程放入后台执行 3.进程取出前台执行 fg % n 或者 fg n 进程取出前台执行 4. ...
- element-UI el-table添加序号列时序号永远都是从1开始?
Part.1 示例 当我们想在 el-table 中添加序号列时,如下: <el-table-column label="序号" type="index" ...
- IIS启用32位应用程序兼容
针对服务器出现html和jsp页面都可以应用,但唯独asp页面打不开的一种情况 win7的IIS运行在32状态下,原因是ASP程序必须在32位下才能使用ACCESS 设置办法: 打开IIS管理器,点应 ...
- install docker on centos7
copy from:https://www.youtube.com/watch?v=pm55BUwQ0iE # Prerequisites - Kernel must be 3.10 at minim ...
- Vue-cli 3.0自定义脚手架
一.进入项目地址 https://github.com/vuejs/vue-cli ,选择 docs目录查看具体安装流程. 中文文档:https://cli.vuejs.org/zh 可以看到我电脑上 ...