Node.js API 之 Buffer

Buffer 用于处理二进制数据流
实例类似整数数组,大小固定
C++ 代码在 V8 堆外分配物理内存

Buffer.alloc

初始化 Buffer

console.log(Buffer.alloc(10)); // 分配大小为10,初始值为0的 Buffer
console.log(Buffer.alloc(5, 1)); // 分配大小为5,初始值为1的 Buffer

Buffer.allocUnsafe

分配非零填充的 Buffer

console.log(Buffer.allocUnsafe(5)); // 分配大小为5,初始值为非零的 Buffer
console.log(Buffer.allocUnsafe(5, 1)); // 分配大小为5,初始值为1的 Buffer

Buffer.from

console.log(Buffer.from([1, 2, 3])); // 使用 [1, 2, 3] 来分配 Buffer
console.log(Buffer.from('test')); // 使用字符串 test 来分配 Buffer

Buffer.byteLength

返回 Buffer 的长度

console.log(Buffer.byteLength('test')); // 4
console.log(Buffer.byteLength('测试')); // 6

Buffer.isBuffer

判断是否为 Buffer

console.log(Buffer.isBuffer({})); // false
console.log(Buffer.isBuffer(Buffer.from([1, 2, 3]))); // true

Buffer.concat

合并 Buffer

let buf1 = Buffer.from('Hello ');
let buf2 = Buffer.from('World ');
let buf3 = Buffer.from('!');
let buf = Buffer.concat([buf1, buf2, buf3]);
console.log(buf.toString()); // Hello World !

buf.length

console.log(buf.length); // 13

buf.toString

console.log(buf.toString('utf8')); // Hello World !
console.log(buf.toString('base64')); // SGVsbG8gV29ybGQgIQ==

buf.fill

let buf4 = Buffer.alloc(10);
console.log(buf4.fill(10, 2, 6)); // 索引 2~6 填充为10

buf.equals

const buf5 = Buffer.from('test');
const buf6 = Buffer.from('test');
const buf7 = Buffer.from('test!');
console.log(buf5.equals(buf6)); // true
console.log(buf5.equals(buf7)); // false

buf5.indexOf

console.log(buf5.indexOf('est')); // 1

你可能感兴趣的:(Node.js,Node.js)