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程序来实现动画功能
Mar 06 Javascript
用jscript实现新建和保存一个word文档
Jun 15 Javascript
解决用jquery load加载页面到div时,不执行页面js的问题
Feb 22 Javascript
javascript原型模式用法实例详解
Jun 04 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
老生常谈JQuery data方法的使用
Sep 09 Javascript
javascript简单进制转换实现方法
Nov 24 Javascript
js实现常见的工具条效果
Mar 02 Javascript
vue获取当前激活路由的方法
Mar 17 Javascript
react实现同页面三级跳转路由布局
Sep 26 Javascript
微信小程序登录时如何获取input框中的内容
Dec 04 Javascript
详解webpack-dev-middleware 源码解读
Mar 23 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
改德生G88 - 加装等响度低音提升电路
2021/03/02 无线电
无数据库的详细域名查询程序PHP版(3)
2006/10/09 PHP
php实现复制移动文件的方法
2015/07/29 PHP
PHP文件上传处理案例分析
2016/10/15 PHP
Linux下安装Memcached服务器和客户端与PHP使用示例
2019/04/15 PHP
ThinkPHP5与单元测试PHPUnit使用详解
2020/02/23 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
一款JavaScript压缩工具:X2JSCompactor
2007/06/13 Javascript
JavaScript 小型打飞机游戏实现原理说明
2010/10/28 Javascript
js中将字符串转换成json的三种方式
2011/01/12 Javascript
文本框中禁止非数字字符输入比如手机号码、邮编
2013/08/19 Javascript
javascript同步服务器时间和同步倒计时小技巧
2015/09/24 Javascript
基于javascript实现图片预加载
2016/01/05 Javascript
VUE中的无限循环代码解析
2017/09/22 Javascript
JS使用贪心算法解决找零问题示例
2017/11/27 Javascript
Angular实现的进度条功能示例
2018/02/18 Javascript
详解vuex的简单使用
2018/03/12 Javascript
angular-tree-component的使用详解
2018/07/30 Javascript
JS左右无缝轮播功能完整实例
2019/05/16 Javascript
Vue替代marquee标签超出宽度文字横向滚动效果
2019/12/09 Javascript
[01:28:56]2014 DOTA2华西杯精英邀请赛 5 24 CIS VS DK
2014/05/26 DOTA
[04:26]DOTA2上海特锦赛小组赛第二日 TOP10精彩集锦
2016/02/27 DOTA
不可错过的十本Python好书
2017/07/06 Python
Python使用pip安装pySerial串口通讯模块
2018/04/20 Python
uwsgi+nginx部署Django项目操作示例
2018/12/04 Python
pycharm最新激活码有效期至2100年(亲测可用)
2021/02/05 Python
Html5新标签datalist实现输入框与后台数据库数据的动态匹配
2017/05/18 HTML / CSS
伊莱克斯阿根廷网上商店:Tienda Electrolux
2021/03/08 全球购物
机电一体化应届生求职信范文
2014/01/24 职场文书
竞争上岗实施方案
2014/03/21 职场文书
2014年医学生毕业自我鉴定
2014/03/26 职场文书
北京奥运会口号
2014/06/21 职场文书
委托证明模板
2014/09/16 职场文书
孕妇离婚协议书范本
2014/11/20 职场文书
2015年教师教学工作总结
2015/04/28 职场文书
css position fixed 左右双定位的实现代码
2021/04/29 HTML / CSS