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面向对象设计二 构造函数模式
Dec 20 Javascript
jquery Mobile入门—外部链接切换示例代码
Jan 08 Javascript
JQuery中Bind()事件用法分析
May 05 Javascript
jQuery Validate表单验证深入学习
Dec 18 Javascript
深入理解javascript的getTime()方法
Feb 16 Javascript
深入理解node.js之path模块
May 03 Javascript
想用好React的你必须要知道的一些事情
Jul 24 Javascript
angularjs手动识别字符串中的换行符方法
Oct 02 Javascript
Fundebug支持监控微信小程序HTTP请求错误的方法
Feb 21 Javascript
Vue中qs插件的使用详解
Feb 07 Javascript
解决VUE项目localhost端口服务器拒绝连接,只能用127.0.0.1的问题
Aug 14 Javascript
JavaScript实现显示和隐藏图片
Apr 29 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中for循环语句的几种变型
2006/11/26 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
2014/10/15 PHP
php隐藏实际地址的文件下载方法
2015/04/18 PHP
php实现计算百度地图坐标之间距离的方法
2016/05/05 PHP
根据地区不同显示时间的javascript代码
2007/08/13 Javascript
JavaScript 事件的一些重要说明
2009/10/25 Javascript
js控制输入框获得和失去焦点时状态显示的方法
2015/01/30 Javascript
JavaScript中神奇的call()方法
2015/03/12 Javascript
BootStrap入门教程(一)之可视化布局
2016/09/19 Javascript
详解jQuery中的事件
2016/12/14 Javascript
TableSort.js表格排序插件使用方法详解
2017/02/10 Javascript
ES6使用Set数据结构实现数组的交集、并集、差集功能示例
2017/10/31 Javascript
vue如何将v-for中的表格导出来
2018/05/07 Javascript
JavaScript设计模式之工厂模式和抽象工厂模式定义与用法分析
2018/07/26 Javascript
实例详解Vue项目使用eslint + prettier规范代码风格
2018/08/20 Javascript
深入理解Python变量与常量
2016/06/02 Python
python入门前的第一课 python怎样入门
2018/03/06 Python
python  Django中的apps.py的目的是什么
2018/10/15 Python
QML使用Python的函数过程解析
2019/09/26 Python
python二元表达式用法
2019/12/04 Python
pytorch实现保证每次运行使用的随机数都相同
2020/02/20 Python
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
Coccinelle官网:意大利的著名皮具品牌
2019/05/15 全球购物
Nordgreen台湾官网:极简北欧设计手表
2019/08/21 全球购物
Yahoo的PHP面试题
2014/05/26 面试题
营业经理岗位职责
2013/11/10 职场文书
实习单位接收函
2014/01/11 职场文书
茶叶店创业计划书范文
2014/01/19 职场文书
人力资源职位说明书
2014/07/29 职场文书
捐款活动总结
2014/08/27 职场文书
副校长竞聘演讲稿
2014/09/01 职场文书
上课迟到检讨书300字
2014/10/15 职场文书
九不准学习心得体会
2016/01/23 职场文书
描述鲁迅的名言整理,一生受用
2019/08/08 职场文书
如何搭建 MySQL 高可用高性能集群
2021/06/21 MySQL
MySQL插入数据与查询数据
2022/03/25 MySQL