Node.js Buffer模块功能及常用方法实例分析
本文实例讲述了node.js buffer模块功能及常用方法。分享给大家供大家参考,具体如下:
buffer模块
alloc()方法
alloc(size,fill,encoding)
可以分配一个大小为 size 字节的新建的 buffer,size默认为0
var buf = buffer.alloc(10);
参数fill为填充的数据,只要指定了fill就会调用buffer.fill(fill)
初始化这个buffer对象
var buf = buffer.alloc(10,0xff);//可以为十六进制的数据
allocunsafe()方法
unsafe(size)
顾名思义就是不安全的方法,因为以这种方式创建的 buffer 实例的底层内存是未初始化的。甚至可能包含到敏感数据,所以通过fill()
方法帮助初始化
buf = buffer.allocunsafe(10); buf.fill(0);
allocunsafeslow()方法
allocunsafeslow()
就是不从buffer缓冲区里分配,直接从操作系统分配,slow指的是没有从缓冲池里高效分配
buf = buffer.allocunsafeslow(10);
from()方法
from()
方法可以分配一个buffer对象,用来存放这个字符串的二进制对象,因此buffer的内容可以通过[]进行访问
buf = buffer.from("helloworld!");//from(array) console.log(buf); buf = buffer.from([123,22,24,36]); console.log(buf); //重建一个buffer,把原来buffer的数据拷贝给新的buffer buf2 = buffer.from(buf); console.log(buf2); //buf[index] index取值范围[0,len-1] console.log(buf[0],buf[1]);
大尾与小尾形式写入存储
writeint32be(value,offset)
第一个参数为写入的数据,第二个参数从哪个位置开始写入 ,表示其以大尾(大端)形式写入writeint32le(value,offset)
以小尾(小端)的形式写入数据
//以大尾的形式存放,4个字节的整数 buf.writeint32be(65535,0); console.log(buf); //以小尾的方式写入 buf.writeint32le(65535,0); console.log(buf);
大尾小尾形式读取数据
readint32le(offset)
是指以小尾整型形式读取数据readfloatle(offset)
是指以小尾浮点形式读取数据
var value = buf.readint32le(0); console.log(value); buf.writefloatle(3.16,0); console.log(buf.readfloatle(0));
读取数据的各种方式
//读取长度 var len = buffer.bytelength("helloworld"); console.log(len); buf = buffer.alloc(4*4); buf.writeint32le(65535,0); buf.writeint32le(65535,4); buf.writeint32le(65535,8); buf.writeint32le(65535,12); console.log(buf); buf.swap32(); console.log(buf); //用高位的方式读取 console.log(buf.readint32be(0)); console.log(buf.readint32be(4)); console.log(buf.readint32be(8)); console.log(buf.readint32be(12)); for (var i of buf.values()) { console.log(i); }
转换
//以二进制方式转为字符串 console.log(buf.tostring('hex')); console.log(buf.tojson()); buf.fill('a'); console.log(buf); console.log(buf.tostring('utf8'));
希望本文所述对大家nodejs程序设计有所帮助。
上一篇: ~从县城回来
下一篇: 以前我姨说给我介绍个对象