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高级程序设计 读书笔记之十 本地对象Date日期
Feb 27 Javascript
鼠标移到导航当前位置的LI变色处于选中状态
Aug 23 Javascript
jquery中cookie用法实例详解(获取,存储,删除等)
Jan 04 Javascript
实现React单页应用的方法详解
Aug 02 Javascript
利用Ionic2 + angular4实现一个地区选择组件
Jul 27 Javascript
JS闭包的几种常见形式实例详解
Sep 16 Javascript
JS实现去除数组中重复json的方法示例
Dec 21 Javascript
原生JS实现轮播图效果
Oct 12 Javascript
利用d3.js实现蜂巢图表带动画效果
Sep 03 Javascript
swiper4实现移动端导航切换
Oct 16 Javascript
小程序实现投票进度条
Nov 20 Javascript
JavaScript架构搭建前端监控如何采集异常数据
Jun 25 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
中国第一家无线电行
2021/03/01 无线电
用php写的serv-u的web申请账号的程序
2006/10/09 PHP
聊天室php&mysql(二)
2006/10/09 PHP
在Laravel框架里实现发送邮件实例(邮箱验证)
2016/05/20 PHP
PHP foreach遍历多维数组实现方式
2016/11/16 PHP
JQuery文本改变触发事件如聚焦事件、失焦事件
2014/01/15 Javascript
原生javascript实现获取指定元素下所有后代元素的方法
2014/10/28 Javascript
jQuery中nextUntil()方法用法实例
2015/01/07 Javascript
jQuery实现仿Alipay支付宝首页全屏焦点图切换特效
2015/05/04 Javascript
最简单的JavaScript图片轮播代码(两种方法)
2015/12/18 Javascript
JS查找字符串中出现次数最多的字符
2016/09/05 Javascript
jQuery插件FusionCharts绘制2D环饼图效果示例【附demo源码】
2017/04/10 jQuery
js中获取URL参数的共用方法getRequest()方法实例详解
2018/10/24 Javascript
详解用场景去理解函数柯里化(入门篇)
2019/04/11 Javascript
详解vue 路由跳转四种方式 (带参数)
2019/04/28 Javascript
JS中使用react-tooltip插件实现鼠标悬浮显示框
2019/05/15 Javascript
利用Python实现简单的相似图片搜索的教程
2015/04/23 Python
Python设计足球联赛赛程表程序的思路与简单实现示例
2016/06/28 Python
如何利用Fabric自动化你的任务
2016/10/20 Python
解决PyCharm不运行脚本,而是运行单元测试的问题
2019/01/17 Python
Scrapy框架爬取Boss直聘网Python职位信息的源码
2019/02/22 Python
Django基础三之视图函数的使用方法
2019/07/18 Python
CSS3弹性伸缩布局之box布局
2016/07/12 HTML / CSS
css3 media 响应式布局的简单实例
2016/08/03 HTML / CSS
英国领先的瓷砖专家:Walls and Floors
2018/04/27 全球购物
电子商务应届生自我鉴定
2014/01/13 职场文书
员工评语大全
2014/01/19 职场文书
网络工程师专家职业发展路线
2014/02/14 职场文书
店面销售职位的职责
2014/03/09 职场文书
运动会搞笑广播稿
2014/10/14 职场文书
爱心捐书倡议书
2015/04/27 职场文书
医院病假条怎么写
2015/08/17 职场文书
创业计划书之情侣餐厅
2019/09/29 职场文书
Java elasticsearch安装以及部署教程
2021/06/28 Java/Android
Python 实现Mac 屏幕截图详解
2021/10/05 Python
DE1103使用报告
2022/04/05 无线电