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工具_Form 封装
Aug 21 Javascript
jquery的Tooltip插件 qtip使用详细说明
Sep 08 Javascript
google jQuery 引用文件,jQuery 引用地址集合(jquery 1.2.6至jquery1.5.2)
Apr 24 Javascript
JavaScript 图像动画的小demo
May 23 Javascript
js如何设置在iframe框架中指定div不显示
Dec 04 Javascript
详解jQuery Mobile自定义标签
Jan 06 Javascript
javascript实现label标签跳出循环操作
Mar 06 Javascript
微信小程序实现选项卡功能
Jun 19 Javascript
JS实现左边列表移到到右边列表功能
Mar 28 Javascript
微信小程序将字符串生成二维码图片的操作方法
Jul 17 Javascript
深入学习Vue nextTick的用法及原理
Oct 08 Javascript
JavaScript组合设计模式--改进引入案例分析
May 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
轻松入门: 煮好咖啡的七个诀窍
2021/03/03 冲泡冲煮
PHP邮件发送类PHPMailer用法实例详解
2014/09/22 PHP
详解PHP错误日志的获取方法
2015/07/20 PHP
php文件缓存方法总结
2016/03/16 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
PHP生成腾讯云COS接口需要的请求签名
2018/05/20 PHP
Swoole4.4协程抢占式调度器详解
2019/05/23 PHP
兼容IE和Firefox的javascript获取iframe文档内容的函数
2011/08/15 Javascript
JQuery获取表格数据示例代码
2014/05/26 Javascript
删除javascript中注释语句的正则表达式
2014/06/11 Javascript
Javascript Objects详解
2014/09/04 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
AngularJs基本特性解析(一)
2016/07/21 Javascript
深入理解JavaScript定时机制
2016/10/27 Javascript
VUE-cli3使用 svg-sprite-loader
2018/10/20 Javascript
async/await让异步操作同步执行的方法详解
2019/11/01 Javascript
Python运算符重载用法实例分析
2015/06/01 Python
linux环境下python中MySQLdb模块的安装方法
2017/06/16 Python
pandas数据预处理之dataframe的groupby操作方法
2018/04/13 Python
Form表单及django的form表单的补充
2019/07/25 Python
Python之数据序列化(json、pickle、shelve)详解
2019/08/30 Python
Django ORM 查询表中某列字段值的方法
2020/04/30 Python
Python使用cn2an实现中文数字与阿拉伯数字的相互转换
2021/03/02 Python
CSS3 Columns分列式布局方法简介
2014/05/03 HTML / CSS
HTML5+CSS3实例 :canvas 模拟实现电子彩票刮刮乐代码
2016/12/30 HTML / CSS
详解HTML5中download属性的应用
2015/08/06 HTML / CSS
运动服饰每月订阅盒:Ellie
2018/04/29 全球购物
英国首屈一指的票务公司:See Tickets
2019/05/11 全球购物
社会实践自我鉴定
2013/11/07 职场文书
员工培训邀请函
2014/02/02 职场文书
物理专业大学生职业生涯规划书
2014/02/07 职场文书
2014年幼儿园园务工作总结
2014/12/05 职场文书
就业推荐表自我评价范文
2015/03/02 职场文书
党小组推荐意见
2015/06/02 职场文书
MongoDB数据库的安装步骤
2021/06/18 MongoDB
css让页脚保持在底部位置的四种方案
2022/07/23 HTML / CSS