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 相关文章推荐
基于jquery循环map功能的代码
Feb 26 Javascript
Ext.get() 和 Ext.query()组合使用实现最灵活的取元素方式
Sep 26 Javascript
基于jquery实现的定时显示与隐藏div广告的实现代码
Aug 22 Javascript
原生js做的手风琴效果的导航菜单
Nov 08 Javascript
javascript修改表格背景色实例代码分享
Dec 10 Javascript
js和jquery中循环的退出和继续下一个循环
Sep 03 Javascript
JSON字符串转JSON对象
Jul 31 Javascript
在jQuery中使用$而避免跟其它库产生冲突的方法
Aug 13 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
Oct 01 Javascript
js 弹出对话框(遮罩)透明,可拖动的简单实例
Jul 11 Javascript
JS实现延迟隐藏功能的方法(类似QQ头像鼠标放上展示信息)
Dec 28 Javascript
JavaScript判断日期时间差的实例代码
Mar 01 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 清空varnish 缓存的详解(包括指定站点下的)
2013/06/20 PHP
PHP简单实现断点续传下载的方法
2015/09/25 PHP
jquery 最简单的属性菜单
2009/10/08 Javascript
Jquery解析json数据详解
2013/12/26 Javascript
浅析jquery ajax异步调用方法中不能给全局变量赋值的原因及解决方法
2014/01/10 Javascript
Jquery动态添加及删除页面节点元素示例代码
2014/06/16 Javascript
Javascript实现多彩雪花从天降散落效果的方法
2015/02/02 Javascript
使用jQuery监听DOM元素大小变化
2016/02/24 Javascript
JavaScript中绑定事件的三种方式及去除绑定
2016/11/05 Javascript
jQuery扩展实现text提示还能输入多少字节的方法
2016/11/28 Javascript
详解bootstrap的modal-remote两种加载方式【强化】
2017/01/27 Javascript
详解浏览器渲染页面过程
2017/02/09 Javascript
js实现本地时间同步功能
2017/08/26 Javascript
jQuery ajax调用webservice注意事项
2017/10/08 jQuery
JavaScript实现异步图像上传功能
2018/07/12 Javascript
jQuery中each和js中forEach的区别分析
2019/02/27 jQuery
node.js使用net模块创建服务器和客户端示例【基于TCP协议】
2020/02/14 Javascript
详解JavaScript 高阶函数
2020/09/14 Javascript
JS跨浏览器解析XML应用过程详解
2020/10/16 Javascript
vuex中遇到的坑,vuex数据改变,组件中页面不渲染操作
2020/11/16 Javascript
初步解析Python中的yield函数的用法
2015/04/03 Python
Python实现线程池代码分享
2015/06/21 Python
Python序列操作之进阶篇
2016/12/08 Python
django 扩展user用户字段inlines方式
2020/03/30 Python
介绍JAVA 中的Collection FrameWork(及如何写自己的数据结构)
2014/10/31 面试题
大一军训感言
2014/01/09 职场文书
绿化先进工作者事迹材料
2014/01/30 职场文书
餐厅销售主管职责范本
2014/02/19 职场文书
一年级学生评语大全
2014/04/21 职场文书
个人安全承诺书
2014/05/22 职场文书
2015年班级工作总结范文
2015/04/03 职场文书
应届生个人的求职(自荐信范文2篇)
2019/08/23 职场文书
pycharm debug 断点调试心得分享
2021/04/16 Python
opencv读取视频并保存图像的方法
2021/06/04 Python
MySQL系列之二 多实例配置
2021/07/02 MySQL
JavaScript正则表达式实现注册信息校验功能
2022/05/30 Java/Android