Node Buffer模块常用方法

2020-09-18  本文已影响0人  弱冠而不立

Buffer 类被引入作为 NodeJS API 的一部分,使其可以在 TCP 流或文件系统操作等场景中处理二进制数据流。Buffer 对象用于表示固定长度的字节序列。
Buffer 属于 Global 对象,使用时不需引入,且 Buffer 的大小在创建时确定,无法调整。

const { Buffer } = require("buffer");
let buf1 = Buffer.alloc(1);
let buf2 = Buffer.allocUnsafe(1);

console.log(buf1);
console.log(buf2);
Buffer.alloc 创建的Buffer是被初始化过的,即每一项都用 00 填充。而 Buffer.allocUnsafe 创建的Buffer并没有经过初始化,是直接使用内存中闲置的缓冲区
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);
Buffer.from 获取的会重新创建一个全新的地址,而不是直接引用之前的地址

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));
buf1 将所有位置都填充,而 buf2 只是从下标为 0 开始填充,填充的长度为 1

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);
从 buf1 0 号位置开始复制到 1 号(不包括)位置,至 buf2 的 1 号位置
上一篇 下一篇

猜你喜欢

热点阅读