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 相关文章推荐
用原生js做个简单的滑动效果的回到顶部
Oct 15 Javascript
js实现网页随机切换背景图片的方法
Nov 01 Javascript
JavaScript Length 属性的总结
Nov 02 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
Jun 24 Javascript
JavaScript中有关一个数组中最大值和最小值及它们的下表的输出的解决办法
Jul 01 Javascript
Node.js检测端口(port)是否被占用的简单示例
Sep 29 Javascript
使用vue框架 Ajax获取数据列表并用BootStrap显示出来
Apr 24 Javascript
微信小程序 scroll-view实现锚点滑动的示例
Dec 06 Javascript
js变量值传到php过程详解 将php解析成数据
Jun 26 Javascript
微信小程序实现图片选择并预览功能
Jul 25 Javascript
详解JavaScript 异步编程
Jul 13 Javascript
vue 使用 v-model 双向绑定父子组件的值遇见的问题及解决方案
Mar 01 Vue.js
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正则
2006/07/07 PHP
PHP 图片合成、仿微信群头像的方法示例
2019/10/25 PHP
tp5.1框架数据库子查询操作实例分析
2020/05/26 PHP
详解PHP中curl_multi并发的实现
2020/06/08 PHP
Javascript 写的简单进度条控件
2008/01/22 Javascript
新手常遇到的一些jquery问题整理
2010/08/16 Javascript
ie与ff下的event事件使用介绍
2013/11/25 Javascript
js使用for循环及if语句判断多个一样的name
2014/09/09 Javascript
javascript获取重复次数最多的字符
2015/07/08 Javascript
js实现温度计时间样式代码分享
2015/08/21 Javascript
jquery+php实现滚动的数字特效
2015/11/29 Javascript
Hammer.js+轮播原理实现简洁的滑屏功能
2016/02/02 Javascript
jquery UI Datepicker时间控件冲突问题解决
2016/12/16 Javascript
基于Bootstrap的Java开发问题汇总(Spring MVC)
2017/01/15 Javascript
利用vue.js插入dom节点的方法
2017/03/15 Javascript
JS实现动态添加DOM节点和事件的方法示例
2017/04/28 Javascript
实例讲解javascript实现异步图片上传方法
2017/12/05 Javascript
Vue发布订阅模式实现过程图解
2020/04/30 Javascript
js回到页面指定位置的三种方式
2020/12/17 Javascript
按日期打印Python的Tornado框架中的日志的方法
2015/05/02 Python
python计算一个序列的平均值的方法
2015/07/11 Python
Python之父谈Python的未来形式
2016/07/01 Python
python获取当前目录路径和上级路径的实例
2018/04/26 Python
Python爬虫实现验证码登录代码实例
2019/05/10 Python
Python用字典构建多级菜单功能
2019/07/11 Python
django ajax发送post请求的两种方法
2020/01/05 Python
如何实现在jupyter notebook中播放视频(不停地展示图片)
2020/04/23 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
Python turtle库的画笔控制说明
2020/06/28 Python
有关HTML5页面在iPhoneX适配问题
2017/11/13 HTML / CSS
科颜氏英国官网:Kiehl’s英国
2019/11/20 全球购物
关于毕业的中学校园广播稿
2014/01/26 职场文书
企业安全标语
2014/06/07 职场文书
爱护公物标语
2014/06/24 职场文书
2014年服装销售工作总结
2014/11/27 职场文书
紫日观后感
2015/06/05 职场文书