目录
一、概述
Buffer对象是Node处理二进制数据的一个接口。它是Node原生提供的全局对象,可以直接使用,不需要require('buffer')。
1、出现的原因:JavaScript比较擅长处理字符串,对于处理二进制数据(比如TCP数据流),就不太擅长。Buffer对象就是用来弥补JavaScript在二进制数据处理上的不足。
2、Buffer是一个构造函数,Buffer对象是V8引擎分配的一段内存,类似数组,每个单元就是一个 字节,存放的是0~255之间的整数值。
例1:生成Buffer对象实例,以及它的赋值和取值
// 生成一个256字节的Buffer实例
var bytes = new Buffer(256);
// 遍历每个字节,写入内容
for (var i = 0; i < bytes.length; i++) {
bytes[i] = i;
}
// 生成一个buffer的view
// 从240字节到256字节
var end = bytes.slice(240, 256); //切片
end[0] // 240
end[0] = 0;
end[0] // 0
例2:拷贝生成Buffer实例(copy方法将bytes实例的4号成员到7号成员的这一段,都拷贝到了more实例从0号成员开始的区域)
let bytes = new Buffer(8)
for (let i = 0; i < bytes.length; i++) {
bytes[i] = i;
}
let more = new Buffer(4);
bytes.copy(more,0,4,bytes.length)
for (let i = 0; i < more.length; i++) {
console.log(more[i])
}
Buffer对象与字符串的互相转换,需要指定编码格式。目前,Buffer对象支持以下编码格式。
- ascii
- utf8
- utf16le:UTF-16的小端编码,支持大于U+10000的四字节字符。
- ucs2:utf16le的别名。
- base64
- hex:将每个字节转为两个十六进制字符。