Buffer 流文件

/* 
什么是 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

  

上一篇:failed to create cublas handle: CUBLAS_STATUS_ALLOC_FAILED 错误解决方法


下一篇:智能聊天机器人实现 源码+解析