JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
创建 Buffer 类
方法 1
创建长度为 10 字节的 Buffer 实例:
var buf = new Buffer(10);
方法 2
通过给定的数组创建 Buffer 实例:
var buf = new Buffer([10, 20, 30, 40, 50]);
方法 3
通过一个字符串来创建 Buffer 实例:
var buf = new Buffer("edu.aliyun.com", "utf-8");
buffer类有一点像数组;
上面俩种形式等价?也可以利用buf[n]来获取值;
写入缓冲区
buf.write(string[, offset[, length]][, encoding])(返回的是写入值的长度)
参数描述如下:
-
string - 写入缓冲区的字符串。
-
offset - 缓冲区开始写入的索引值,默认为 0 。
-
length - 写入的字节数,默认为 buffer.length
-
encoding - 使用的编码。默认为 'utf8'
-
从缓冲区读取数据
buf.toString([encoding[, start[, end]]])
将 Buffer 转换为 JSON 对象
var buf = new Buffer('edu.aliyun.com');var json = buf.toJSON();console.log(json);
缓冲区合并
Buffer.concat(list[, totalLength])
缓冲区比较
var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);
if(result < 0) {
console.log(buffer1 + " 在 " + buffer2 + "之前");}
else if(result == 0){
console.log(buffer1 + " 与 " + buffer2 + "相同");}
else {
console.log(buffer1 + " 在 " + buffer2 + "之后");}
拷贝缓冲区
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])//拷贝给谁,(谁从哪开头),资源的起始和终止;
缓冲区裁剪
buf.slice([start[, end]])
-
start - 数字, 可选, 默认: 0
-
end - 数字, 可选, 默认: buffer.length
缓冲区长度
buf.length;