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 18 Javascript
JS实现自动固定顶部的悬浮菜单栏效果
Sep 16 Javascript
深入浅析JavaScript字符串操作方法 slice、substr、substring及其IE兼容性
Dec 16 Javascript
JavaScript中解决多浏览器兼容性23个问题的快速解决方法
May 19 Javascript
Javascript获取随机数的实现方法
Jun 22 Javascript
JS中split()用法(将字符串按指定符号分割成数组)
Oct 24 Javascript
详解webpack 配合babel 将es6转成es5 超简单实例
May 02 Javascript
vue.js删除动态绑定的radio的指定项
Jun 02 Javascript
jQuery实现的事件绑定功能基本示例
Oct 11 jQuery
Angular6 正则表达式允许输入部分中文字符
Sep 10 Javascript
关于vue-cli 3配置打包优化要点(推荐)
Apr 22 Javascript
微信小程序的tab选项卡的实现效果
May 15 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执行速度全攻略(上)
2006/10/09 PHP
资料注册后发信小技巧
2006/10/09 PHP
php简单开启gzip压缩方法(zlib.output_compression)
2013/04/13 PHP
php+lottery.js实现九宫格抽奖功能
2019/07/21 PHP
Laravel 微信小程序后端搭建步骤详解
2019/11/26 PHP
js获取height和width的方法说明
2013/01/06 Javascript
javascript文本框内输入文字倒计数的方法
2015/02/24 Javascript
JS短信验证码倒计时功能的实现(没有验证码,只有倒计时)
2016/10/27 Javascript
javascript判断firebug是否开启的方法
2016/11/23 Javascript
微信小程序  wx.request合法域名配置详解
2016/11/23 Javascript
Bootstrap CSS组件之导航(nav)
2016/12/17 Javascript
详解Angular 4.x Injector
2017/05/04 Javascript
Javascript继承机制详解
2017/05/30 Javascript
使用Dropzone.js上传的示例代码
2017/10/10 Javascript
ionic选择多张图片上传的示例代码
2017/10/10 Javascript
详解React-Router中Url参数改变页面不刷新的解决办法
2018/05/08 Javascript
微信小程序背景音乐开发详解
2019/12/12 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
浅谈JavaScript中等号、双等号、 三等号的区别
2020/08/06 Javascript
基于JQuery和DWR实现异步数据传递
2020/10/16 jQuery
解决vue项目本地启动时无法携带cookie的问题
2021/02/06 Vue.js
[08:54]《一刀刀一天》之DOTA全时刻18:十九支奔赴西雅图队伍全部出炉
2014/06/04 DOTA
[03:14]2014DOTA2西雅图国际邀请赛 EG战队巡礼
2014/07/07 DOTA
python 将数据保存为excel的xls格式(实例讲解)
2018/05/03 Python
详解windows python3.7安装numpy问题的解决方法
2018/08/13 Python
浅谈Python基础—判断和循环
2019/03/22 Python
wxpython绘制音频效果
2019/11/18 Python
哪些是python中web开发框架
2020/06/17 Python
如何基于Python爬虫爬取美团酒店信息
2020/11/03 Python
GUESS Factory加拿大:牛仔裤、服装及配饰
2019/09/20 全球购物
区优秀教师事迹材料
2014/02/10 职场文书
中介公司区域经理岗位职责范本
2014/03/02 职场文书
人力资源总监工作说明
2014/03/03 职场文书
高中同学会活动方案
2014/08/14 职场文书
我爱幼儿园演讲稿
2014/09/11 职场文书
简历自我评价优缺点
2015/03/11 职场文书