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 面向对象编程基础:继承
Aug 21 Javascript
jquery创建表格(自动增加表格)代码分享
Dec 25 Javascript
js实现下拉框选择要显示图片的方法
Feb 16 Javascript
详解JavaScript函数对象
Nov 15 Javascript
解决jquery插件:TypeError:$.browser is undefined报错的方法
Nov 21 Javascript
jQuery dataTables与jQuery UI 对话框dialog的使用教程
Sep 02 Javascript
boostrapTable的refresh和refreshOptions区别浅析
Jan 22 Javascript
Vue实现购物车功能
Apr 27 Javascript
详解Vuex管理登录状态
Nov 13 Javascript
JS+HTML5 Canvas实现简单的写字板功能示例
Aug 30 Javascript
详解Vue template 如何支持多个根结点
Feb 10 Javascript
react ant Design手动设置表单的值操作
Oct 31 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
盘点被央视点名过的日本动画电影 一部比一部强
2020/03/08 日漫
php SQL防注入代码集合
2008/04/25 PHP
php文件操作实例代码
2012/05/10 PHP
php数组(array)输出的三种形式详解
2013/06/05 PHP
微信公众平台开发之天气预报功能
2015/08/31 PHP
php远程下载类分享
2016/04/13 PHP
PHP使用 Pear 进行安装和卸载包的方法详解
2019/07/08 PHP
元素的内联事件处理函数的特殊作用域在各浏览器中存在差异
2011/01/12 Javascript
基于Jquery实现表格动态分页实现代码
2011/06/21 Javascript
高性能Javascript笔记 数据的存储与访问性能优化
2012/08/02 Javascript
基于jquery实现控制经纬度显示地图与卫星
2013/05/20 Javascript
jquery得到font-size属性值实现代码
2013/09/30 Javascript
jQuery切换所有复选框选中状态的方法
2015/07/02 Javascript
简单分析javascript中的函数
2016/09/10 Javascript
详解js的事件处理函数和动态创建html标记方法
2016/12/16 Javascript
微信小程序 本地存储及登录页面处理实例详解
2017/01/11 Javascript
关于javascript sort()排序你可能忽略的一点理解
2017/07/18 Javascript
详细分析jsonp的原理和实现方式
2017/11/20 Javascript
基于vue 开发中出现警告问题去除方法
2018/01/25 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
JS实现匀速与减速缓慢运动的动画效果封装示例
2018/08/27 Javascript
Vue框架TypeScript装饰器使用指南小结
2019/02/18 Javascript
基于openlayers实现角度测量功能
2020/09/28 Javascript
[02:22]《新闻直播间》2017年08月14日
2017/08/15 DOTA
Python初学时购物车程序练习实例(推荐)
2017/08/08 Python
python实现感知机线性分类模型示例代码
2019/06/02 Python
Python内置方法实现字符串的秘钥加解密(推荐)
2019/12/09 Python
python字符串下标与切片及使用方法
2020/02/13 Python
Django基于客户端下载文件实现方法
2020/04/21 Python
tensorflow从ckpt和从.pb文件读取变量的值方式
2020/05/26 Python
tensorflow模型的save与restore,及checkpoint中读取变量方式
2020/05/26 Python
Python爬虫之Spider类用法简单介绍
2020/08/04 Python
[原创]赚疯了!转手立赚800+?大佬的python「抢茅台脚本」使用教程
2021/01/12 Python
工作人员思想汇报
2014/01/09 职场文书
党章学习心得体会2016
2016/01/14 职场文书
Spring Cloud OpenFeign模版化客户端
2022/06/25 Java/Android