Node Buffer模块常用方法
2020-09-18 本文已影响0人
弱冠而不立
Buffer 类被引入作为 NodeJS API 的一部分,使其可以在 TCP 流或文件系统操作等场景中处理二进制数据流。Buffer 对象用于表示固定长度的字节序列。
Buffer 属于 Global 对象,使用时不需引入,且 Buffer 的大小在创建时确定,无法调整。
- 创建
-
Buffer.alloc(bufferLen)
和Buffer.allocUnsafe(bufferLen)
-
const { Buffer } = require("buffer");
let buf1 = Buffer.alloc(1);
let buf2 = Buffer.allocUnsafe(1);
console.log(buf1);
console.log(buf2);
![](https://img.haomeiwen.com/i22082630/51ae5b80a078ff7d.png)
Buffer.from(string/array/buffer, unicode)
const { Buffer } = require("buffer");;
let bufFromStr = Buffer.from("hello world", "utf-8");
let bufFromArr = Buffer.from([1,10,"8","$"]);
let bufFromBuffer = Buffer.from(bufFromStr);
console.log(bufFromStr);
console.log(bufFromArr);
console.log(bufFromBuffer);
console.log(bufFromBuffer == bufFromStr);
bufFromStr = bufFromArr;
console.log(bufFromBuffer);
![](https://img.haomeiwen.com/i22082630/237e5b2a5dafba47.png)
- 填充:
buf.fill(value, start=0, end=bufferLen)
value:将要填充的数据;
start:填充数据的开始位置,不指定默认为 0;
end:填充数据的结束位置,不指定默认为 Buffer 的长度。
let buf1 = Buffer.alloc(3);
let buf2 = Buffer.alloc(3);
console.log(buf1.fill(1));
console.log(buf2.fill(1,0,1));
![](https://img.haomeiwen.com/i22082630/c67ee916c7f91684.png)
- 复制:
buf.copy(target, targetStart, sourceStart, sourceEnd)
target:目标 Buffer
targetStart:目标 Buffer 的起始位置
sourceStart:源 Buffer 的起始位置
sourceEnd:源 Buffer 的结束位置(不包含)
let buf1 = Buffer.alloc(3);
let buf2 = Buffer.alloc(3);
buf1.fill(abc);
buf1.copy(buf2,1,0,1);
console.log(buf1);
console.log(buf2);
![](https://img.haomeiwen.com/i22082630/05be4e143d56ce6f.png)
- 截取 (类似字符串,数组):
buf.slice
- 查找 (类似字符串,数组):
buf.indexOf
- 拼接(类似字符串,数组):
buf.concat