欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

Node.js Buffer模块功能及常用方法实例分析

程序员文章站 2023-10-31 19:20:34
本文实例讲述了node.js buffer模块功能及常用方法。分享给大家供大家参考,具体如下: buffer模块 alloc()方法 alloc(size,fill,...

本文实例讲述了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程序设计有所帮助。