Node.js中的Buffer对象
来源:互联网 发布:iphone6s屏幕解锁软件 编辑:程序博客网 时间:2024/06/06 10:21
在ES6之前,客户端js脚本代码对于二进制数据并没有提供一个很好的支持。在处理TCP流或文件流的时,必须要处理二进制数据。因此在Node.js中,定义了一个Buffer类,该类用来创建一个专门存放二进制数据的缓存区
创建Buffer对象
在Node.js中,Buffer类是一个可以在人员和模块中被利用的全局类,不需要另外加载任何模块。Buffer类拥有三种形式的构造函数,第一种只需将缓存区大小(以字节为单位)指定为构造函数的参数
new Buffer(size)
被创建的Buffer对象拥有一个length属性,属性值为缓存区大小。
可以使用Buffer对象的fill方法来初始化缓存区的所有内容,第一个参数为需要被写入的数值,是必须指定的,第二个和第三个参数为可选参数。其中第二个参数用于指定从第几个字节处开始写入被指定的数值,默认值是0。第三个参数用于指定将数值一致写入到第几字节处。
var buf = new Buffer(128); buf.fill(1, 0, 30);
Buffer类的第二种形式构造是直接使用一个数组来初始化缓存区
new Buffer(array)
Buffer类的第三种形式的构造函数是直接使用一个字符串来初始化缓存区
new Buffer(str, [encoding]); //第二个参数用于指定文字编码,默认为utf-8 new Buffer('hello')
字符串长度与缓存区长度
在Node.js中,一个字符串的长度与根据该字符串所创建的长度并不相同,因为在计算字符串长度时以文字做为一个单位,而在计算缓存区长度时以字节作为一个单位。
在REPL环境中输入以下命令
> str = '你好' > buf = new Buffer(str); > <Buffer e4 bd a0 e5 a5 bd> > str.length > 2 > buf.length > 6
针对一个引用了字符串对象的str对象来说,str[2]获取的是第三个文字,而针对一个引用了缓存区对象的buf变量来说,buf[2]获取的是缓存区中第三个字节数据转换成整数后的数值。另外,Buffer对象是可以被修改的,而字符串不能
> str = '早上好' > str[0] = '晚' > str > '早上好'
Buffer对象并没有像字符串一样拥有众多方法,唯一的方法slice与字符串对象的slice方法使用相同,不同的是slice之后的值保存了原来Buffer对象一样的引用。
Buffer对象的toString方法
buf.toString([encoding], [start], [end]) > buf = new Buffer('早上好') > buf.toString('utf8', 3, 6); > '上'
Buffer对象的write方法
如果要将字符串当作二进制数据来使用,只需要将该字符串做为Buffer类的构造函数的参数来创建Buffer对象即可。但是有时我们需要将已经创建的Buffer对象写入字符串,这时需要用到write方法
buf.write(string, [offset], [length], [encoding]) > buf = new Buffer('早上好') > <Buffer e6 97 a9 e4 b8 8a e5 a5 bd> > buf.write('晚',0,3); > buf.toString(); > '晚上好'
还可以通过StringDecoder对象将Buffer对象中的数据转换成字符串,比toString更方便进行批量操作
Buffer对象与数值对象之间的转换
我们以readUInt8(读取缓存区中的8位无符号整数)为例读取缓存中的一些数据
> buf = new Buffer([0x00, 0x10, 0x20, 0x30]); > buf.readUInt8(0) //读取缓存区中第1个字节出的无符号整数 > 0 > buf.readUInt8(1) //读取缓存区中第2个字节出的无符号整数 > 16
- Node.js中的Buffer对象
- node.js中的全局对象Buffer
- Node.js中Buffer对象注意细节
- node.js Buffer对象(模块详解)
- Node.js8 Buffer对象
- node.js Buffer模块
- Node.js Buffer使用方法
- Node.js 缓冲区 Buffer
- Node.js Buffer(缓冲区)
- Node.js Buffer学以致用
- Node.js Buffer(缓冲区)
- Node.js Buffer(缓冲区)
- Node.js Buffer(缓冲区)
- Node.js Buffer
- Node.js buffer
- Node.js[3] Buffer
- Node.js缓冲器Buffer
- [Node.js]Buffer
- WiKitude6.0中文教程
- 实现自定义checkbox、radio样式
- android studio 总结自己开发中常常用到的快捷键
- Java Jvm运行机制原理
- Leetcode_Plus One
- Node.js中的Buffer对象
- cf#402 E 大模拟
- Visual Studio 各版本下载
- node-webkit制作桌面应用
- uboot的源码目录分析
- c# 托盘程序编程
- struts2中的jar包简述
- Java学习:java面试
- Codeforces Round #402 (Div. 2) D