Node.js——Buffer
Buffer1、创建Buffer对象1.1、Buffer.from()1.2、Buffer.alloc()1.3、Buffer.allocUnsafe()2、核心属性与方法2.1、常用属性2.2、写入数据2.3、读取数据2.4、复制与切片3、编码机制4、实际应用4.1、文件读写4.2、网络请求4.3、加密/哈希1、创建Buffer对象在Node.js中Buffer类是一个可以在任何模块中被利用的全局类不需要为该类的使用而加载任何模块。1.1、Buffer.from()// 从字符串创建constbuf1Buffer.from(Hello);// 从数组constbuf2Buffer.from([1,2,3]);// 从另一个 Bufferconstbuf3Buffer.from(buf1);1.2、Buffer.alloc()//安全推荐constbufBuffer.alloc(10);// 10 字节自动清零1.3、Buffer.allocUnsafe()//快但不安全constbufBuffer.allocUnsafe(10);// 可能包含旧数据2、核心属性与方法2.1、常用属性buf.length// 字节长度buf[index]// 访问某个字节0~255constbufBuffer.from(ABC);console.log(buf[0]);// 65 (A)2.2、写入数据buf.write(string,offset,length,encoding)constbufBuffer.alloc(10);buf.write(Hello,0,5,utf8);2.3、读取数据buf.toString(encoding,start,end)buf.toString();// Hellobuf.toString(hex);// 十六进制buf.toString(base64);// Base642.4、复制与切片//会共享内存constbufBuffer.from(abcdef);constslicebuf.slice(0,3);slice[0]100;console.log(buf.toString());// 已修改原 buffer//更安全consttargetBuffer.alloc(3);buf.copy(target,0,0,3);3、编码机制Node.js 默认使用 UTF-8Buffer.from(中文,utf8)Buffer.from(中文,hex)// 错误常见编码utf8asciilatin1hexbase644、实际应用4.1、文件读写constfsrequire(fs);constdatafs.readFileSync(./image.png);console.log(datainstanceofBuffer);// true4.2、网络请求http.createServer((req,res){letchunks[];req.on(data,chunkchunks.push(chunk));req.on(end,(){constbodyBuffer.concat(chunks);});});4.3、加密/哈希constcryptorequire(crypto);consthashcrypto.createHash(sha256);hash.update(Buffer.from(hello));console.log(hash.digest(hex));