Node.js学习笔记:Buffer模块处理

标签(空格分隔): node.js


Buffer的官方API文档

Buffer像一个Array对象,主要用于操作字节。它是一个典型的JavaScript与C++结合的模块,将性能相关部分用C++实现,非性能相关的部分用JavaScript实现。

Buffer所占用的内存不是通过V8分配的,是在Node的C++层面实现内存的申请,属于堆外存。

Node在进程启动时就已经加载了Buffer,并将其放在全局对象global上。所以使用Buffer时,无需通过require()即可直接使用。

指定Buffer大小:

new Buffer(size)

获取Buffer长度

buf.length

获取Buffer对象的字节长度

Buffer.byteLength(string [, encoding])

Buffer的转换

Buffer对象可以与字符串之间相互转换。目前支持的字符串编码类型有如下几种:

  • ASCII
  • UTF-8
  • UTF-16LE/UCS-2
  • Base64
  • Binary
  • Hex

字符串转Buffer

new Buffer(str, [encoding]);

encoding默认值为UTF-8。

一个Buffer对象可以存储不同编码类型的字符串转码的值,调用write()方法即可实现该目的:

buf.write(string, [offset], [length], [encoding]);
  • offset: 默认为0;
  • length: 默认为buffer.length – offset;
  • encoding: 默认为”utf-8″

Buffer转字符串

buf.toString([encoding], [start], [end])

在Node.js中,还可以使用StringDecoder对象将Buffer对象中的数据转换为字符串,该对象的作用与Buffer对象的toString方法的作用相同,但是对于utf8编码格式的字符串提供更好的支持。

判断编码类型是否支持转换成Buffer

Buffer.isEncoding(encoding)

如果支持转换返回值为true,否则为false。

Buffer不支持GBK、GB2312和BIG-5编码。可以使用iconv和iconv-lite两个模块支持更多的编码类型转换。

Buffer的拼接

Buffer.concat(list [ totalLength])

判断Buffer对象

Buffer.isBuffer(obj)

Buffer对象的裁剪

buf.slice([start], [end])

Buffer对象的拷贝

buf.copy(targetBuffer [, targetStart] [, sourceStart] [, sourceEnd])

推荐:

JavaScript标准参考教程:Buffer对象: http://javascript.ruanyifeng.com/nodejs/buffer.html

本文作者:子匠_Zijor,转载请注明出处:http://www.dengzhr.com/node-js/827