/* 什么是 Buffer? Buffer 就是 Node.js 处理二进制数据的容器 在 ES6 之前,JS 并没有处理二进制的机制, 在 ES6 之后,JS 使用了 TypedArray 里的 Uint8Array 作为 Buffer 的底层 Buffer 类似于整数的数组,但是长度受限(8bit) 存储的机制并不属于 V8 管理 属于全局变量,不需要调用 require('buffer').Buffer v8 之前的 node.js 没有初始化 Buffer,v8 之后默认初始化 Buffer 的主要作用 数值的读取与存储 字符的读取与存储 二进制数据的读取与存储(核心能力) */ // 1.创建一定长度的 Buffer,并初始化为 0 const LEN = 10; const b = Buffer.alloc(LEN); console.log(b); /* 2.创建带初始值的 Buffer */ const c = Buffer.alloc(10, 'a'); // c => <Buffer 61 61 61 61 61 61 61 61 61 61> /* 3.创建不初始化的 Buffer */ const d = Buffer.allocUnsafe(10); // d => <Buffer f8 b1 7d a1 7c 7f 00 00 00 99> /* 4.从数组开始初始化 Buffer */ const e = Buffer.from(['a', 'b', 'c'], 'latin1'); // e => <Buffer 00 00 00> const f = Buffer.from([3, 2, 1]); // f => <Buffer 03 02 01> /* 5.从字符以 UTF-8 形式存储 */ const g = Buffer.from('中国', 'utf8'); // g => <Buffer e4 b8 ad e5 9b bd> // 还原为字符 g.toString() // 中国 /* 6.以指定字符集存储 */ /* Latin1是ISO-8859-1的别名,有些环境下写作Latin-1。ISO-8859-1编码是单字节编码,向下兼容ASCII,其编码范围是0x00-0xFF,0x00-0x7F之间完全和ASCII一致,0x80-0x9F之间是控制字符,0xA0-0xFF之间是文字符号 */ const h = Buffer.from('中国', 'latin1'); // h => <Buffer 2d fd> const i = Buffer.from('sf', 'latin1'); // i => <Buffer 73 66> /* 7.拼接 buffer */ const buf1 = Buffer.alloc(10); const buf2 = Buffer.alloc(14); const buf3 = Buffer.alloc(18); const totalLength = buf1.length + buf2.length + buf3.length; // Prints: 42 console.log(totalLength); const bufA = Buffer.concat([buf1, buf2, buf3], totalLength); // Prints: <Buffer 00 00 00 00 ...> console.log(bufA); // Prints: 42 console.log(bufA.length); /* 剩下的文档 */ https://hub.fastgit.org/Web-Dev-Tutor/nodejs/blob/master/8.%20Buffer%20%E4%B8%8E%20%E6%B5%81.md