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


Posted in Javascript onJanuary 05, 2019

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

Javascript 相关文章推荐
javascript offsetX与layerX区别
Mar 12 Javascript
javascript 全等号运算符使用说明
May 31 Javascript
JavaScript中的null和undefined解析
Apr 14 Javascript
JS 获取浏览器和屏幕宽高等信息代码
Mar 31 Javascript
js处理表格对table进行修饰
May 26 Javascript
js实现特定位取反原理及示例
Jun 30 Javascript
JavaScript面向对象的实现方法小结
Apr 14 Javascript
基于Bootstrap实现图片轮播效果
May 22 Javascript
javascript实现瀑布流动态加载图片原理
Aug 12 Javascript
bootstrap实现图片自动轮播
Dec 21 Javascript
探索Vue高阶组件的使用
Jan 08 Javascript
vue.js实现带日期星期的数字时钟功能示例
Aug 28 Javascript
Node.js net模块功能及事件监听用法分析
Jan 05 #Javascript
JS无限级导航菜单实现方法
Jan 05 #Javascript
JSON字符串操作移除空串更改key/value的介绍
Jan 05 #Javascript
JavaScript常见事件对象与操作实例总结
Jan 05 #Javascript
JavaScript常见事件处理程序实例总结
Jan 05 #Javascript
JavaScript代码调试方法实例小结
Jan 05 #Javascript
JavaScript实现连连看连线算法
Jan 05 #Javascript
You might like
php at(@)符号的用法简介
2009/07/11 PHP
使用php shell命令合并图片的代码
2011/06/23 PHP
PHP5.5和之前的版本empty函数的不同之处
2014/06/13 PHP
thinkphp5框架路由原理与用法详解
2020/02/11 PHP
Prototype Hash对象 学习
2009/07/19 Javascript
javascript与CSS复习(三)
2010/06/29 Javascript
再谈Jquery Ajax方法传递到action(补充)
2014/05/12 Javascript
JS图片放大效果简单实现代码
2016/09/08 Javascript
jQuery实现花式轮播之圣诞节礼物传送效果
2016/12/25 Javascript
jQuery插件echarts实现的多折线图效果示例【附demo源码下载】
2017/03/04 Javascript
jQuery实现获取h1-h6标题元素值的方法
2017/03/06 Javascript
Bootstrap 设置datetimepicker在屏幕上面弹出设置方法
2017/03/21 Javascript
Javascript实现数组中的元素上下移动
2017/04/28 Javascript
详解webpack3编译兼容IE8的正确姿势
2017/12/21 Javascript
vue2.5.2使用http请求获取静态json数据的实例代码
2018/02/27 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
vue中移动端调取本地的复制的文本方式
2020/07/18 Javascript
python实现telnet客户端的方法
2015/04/15 Python
matplotlib作图添加表格实例代码
2018/01/23 Python
六行python代码的爱心曲线详解
2019/05/17 Python
基于python的itchat库实现微信聊天机器人(推荐)
2019/10/29 Python
python 通过视频url获取视频的宽高方式
2019/12/10 Python
python numpy--数组的组合和分割实例
2020/02/24 Python
python实现凯撒密码、凯撒加解密算法
2020/06/11 Python
基于TensorFlow的CNN实现Mnist手写数字识别
2020/06/17 Python
python中tab键是什么意思
2020/06/18 Python
利用CSS3的transition属性实现滑动效果
2015/08/05 HTML / CSS
编辑找工作求职信分享
2014/01/03 职场文书
先进典型事迹材料
2014/12/29 职场文书
公司年夜饭通知
2015/04/25 职场文书
2015年底工作总结范文
2015/05/15 职场文书
Python3 使用pip安装git并获取Yahoo金融数据的操作
2021/04/08 Python
Java基础之详解HashSet的使用方法
2021/06/30 Java/Android
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android
mysql聚集索引、辅助索引、覆盖索引、联合索引的使用
2022/02/12 MySQL
一次线上mongo慢查询问题排查处理记录
2022/03/18 MongoDB