1.Buffer类
Buffer 与字符编码
Buffer 实例一般用于表示编码字符的序列,比如 UTF-8 、 UCS2 、 Base64 、或十六进制编码的数据。 通过使用显式的字符编码,就可以在 Buffer 实例与普通的 JavaScript 字符串之间进行相互转换。
我们 再操作文件或者网路数据的时候,其实就是操作二进制数据流,Node为我门提供了一个更加方便的去操作这种数据流的类Buffer,他是一个全局的类。
Buffer
类在 Node.js 中是一个全局变量,因此无需使用 require('buffer').Buffer
1.new Buffer(size)
这个方法用来分配一个长度一个空间大小
官方文档:
size
<integer> 新建的 Buffer
期望的长度
分配一个大小为 size
字节的新建的 Buffer
。如果 size
大于 buffer.constants.MAX_LENGTH
或小于 0,则抛出 RangeError
错误。如果 size
为 0,则创建一个长度为 0 的 Buffer
var bf = new Buffer(5)
//输出内容
console.log(bf)
//<Buffer 00 00 00 00 00>
当我们未一个buffer对象分配空间大小之后,其长度是固定的,不能改变
我们测试一下:
var bf = new Buffer(5)
//输出内容
console.log(bf)
//结果<Buffer 00 00 00 00 00>
bf[7] = 10;
console.log(bf)
//结果<Buffer 00 00 00 00 00>
我们可以看出来bf对象我们初始给的长度是5,当我们修改bf[7]的值得的时候输出结果并未改变。接下来我们修改bf[1]:
var bf = new Buffer(5)
//输出内容
console.log(bf)
//结果<Buffer 00 00 00 00 00>
bf[1] = 10;
console.log(bf)
//结果<Buffer 00 0a 00 00 00>
我们可以看出第二个元素(bf[1],bf下标为1的元素,下标从0开始,bf[1]也就是第二个)的值不是00,而是0a,0a是十六进制的10,这里输出的都是十六进制数据
2.new Buffer(array)
var bf2= new Buffer([1,2,3])
console.log(bf2)
//结果:<Buffer 01 02 03>
这种创建buffer对象的方式是进行声明并赋值,其长度也是不可改变的
3.new Buffer(string,[encoding]);
通过这种方式将字符串转成一个二进制的数据,后面编码默认的格式是‘utf-8var bf3 =new Buffer('hahah','utf-8')
console.log(bf3)
//结果:<Buffer 68 61 68 61 68>
var bf3 =new Buffer('hahah','utf-8')
console.log(bf3)
//结果:<Buffer 68 61 68 61 68>
console.log('输出字节长度')
console.log(bf3.length)
//结果:输出字节长度
// 5
console.log('循环输出内容')
var str = ''
for (var i=0;i<bf3.length;i++){
//如果不使用String.fromCharCode()将输出十六进制内容
console.log(String.fromCharCode(bf3[i]));
str+=String.fromCharCode(bf3[i]);
}
console.log('拼接后的数据')
console.log(str)
//循环输出内容
// h
// a
// h
// a
// h
//hahah
2.Buffer对象其他操作的方法
1.buf.write()
var str = 'haha'
console.log(new Buffer(str))
//结果:<Buffer 68 61 68 61>
var bf=new Buffer(5)
bf.write(str);
console.log(bf)
//结果:<Buffer 68 61 68 61 00>
//我们给bf对象的长度为5,str的字节长度为4,bf自动补充
var bf2=new Buffer(2)
bf2.write(str);
console.log(bf2)
//结果:<Buffer 68 61>
//我们给bf对象的长度为2,str的字节长度为4,bf自动截取
var bf3=new Buffer(5)
bf3.write(str,1)
console.log(bf3)
//结果:<Buffer 00 68 61 68 61>
//我们给了bf3两个参数,str和偏移量1,bf3从下标为1开始写入
var bf3=new Buffer(5)
bf3.write(str,1,2)
console.log(bf3)
//结果:<Buffer 00 68 61 00 00>
//我们给了bf3三个个参数,
// str和偏移量1以及一个长度(也就是像bf3里面写入多少位字符),
// bf3从下标为1开始写入,写入2位
几个常用的buffer方法官方文档:
这里不再针对方法陈述,献上文档地址:http://nodejs.cn/api/buffer.html