Buffer对象是Node.js用来处理二进制数据的一个接口。JavaScript比较擅长处理Unicode数据,对于处理二进制格式的数据(比如TCP数据流),就不太擅长。Buffer对象就是为了解决这个问题而提供的。该对象也是一个构造函数,它的实例代表了V8引擎分配的一段内存,基本上是一个数组,成员都为整数值。
一、Buffer结构
buffer是一个像Array的对象,但它主要用于操作字节。下面我们从模块结构的对象结构的层面上来认识它。
1.模块结构
Buffer是一个典型的javascript与C++结合的模块,它将性能相关部分用C++实现,将非性能相关的部分用javascript实现。
Buffer所占用的内存不是通过V8分配的,属于堆外内存。由于V8垃圾回收性能的影响,将常用的操作对象用更高效和专有的内存分配回收策略来管理是个不错的思路。
由于Buffer太过常见,Node在进程启动时就已经加载了它,并将其放在全局对象(global)。所以在使用Buffer时,无须通过require()即可直接使用。
二、Buffer对象
Buffer对象类似于数组,它的元素为16进制的两位数,即0到255的数值。示例代码:
var str = "深入浅出node.js"; var buf = new Buffer(str,‘utf-8‘); console.log(buf); //=> <Buffer e6 b7 b1 e5 85 a5 e6 b5 85 e5 87 ba 6e 6f 64 65 2e 6a 73>
时间: 2024-10-15 06:44:26