node.js学习笔记--API之buffer

注:此博客是在学习进击Node.js基础(二)这门课程时的学习笔记,感谢Scott老师的课程。

buffer在nodejs里处理二进制数据,因为js字符串是以UTF-8存储的,处理二进制的能力很弱。而网络层对请求和响应的处理都是二进制的,所以nodejs就有buffer这个接口作为专门存放二进制数据的缓存区,并提供了一些方法可对缓存区的数据进行处理。buffer在nodejs里是可以全局访问的,不需要require来引用和加载它。

Buffer是一个对象,也是一个构造函数,具有自己的属性和静态方法,通过Buffer new出来的实例其实代表的是V8引擎里的一段内存,实际上也是一段数组,成员都是整数值。Buffer传参时需要指定格式的,默认是UTF-8

在命令行里输入以下

new Buffer('Hello 慕课网');

返回:

$ <Buffer 48 65 6c 6c 6f 20 e6 85 95 e8 af be e7 bd 91>

因为默认UTF-8。也可以换编码格式

new Buffer('Hello 慕课网', 'base64');

返回:

$ <Buffer 1d e9 65 a1 44>

就是base64格式的字符串。

Buffer可以通过以下方式分配内存:

var buf = new Buffer(8);  //分配长度为8的内存
buf.length  //打印长度

此外,以下还有三种方式可以实例化buffer

1. 通过直接传参来实例化

var buf2 = new Buffer('12345678');
console.log(buf2)

返回:

$ <Buffer 31 32 33 34 35 36 37 38>

2. 通过指定内存长度,对对分配的内存写入数据来实例化

var buf3 = new Buffer(7);
buf.write('12345678');
console.log(buf3)

返回:

$ <Buffer 31 32 33 34 35 36 37>

第八位没有了,所以只要指定了Buffer的长度,那么写入的超出部分都不会被缓存。

3. 通过数组进行初始化

var buf4 = new Buffer([1,2,3,4]);
console.log(buf4)

返回:

$ <Buffer 01 02 03 04>

可以通过下标来访问数组里的某一个值:

console.log(buf4[1]) //取数组的第二位

返回:

$ 2

注意在Buffer的数组里如果传入小数是直接取整的,如[1, 2.33 ,3 ,4],取到的第二位的值还是2。

猜你喜欢

转载自blog.csdn.net/sriting/article/details/79632616