Buffer是NodeJS的重要数据类型,很有广泛的应用。
Buffer是代表原始堆的分配额的数据类型。在NodeJS中以类数组的方式使用。
比如,用法示例:
var buf = new Buffer(255);
buf[0] = 23;
console.log(buf[0]);
解释:分配255个字节,第一个字节写入数据23。
Nodejs中文件操作、网络数据传输如Post数据,通常默认数据格式都是Buffer。
如:
var fs = require("fs");
fs.readFile("./test7.js",function(er,buf){
console.log(Buffer.isBuffer(buf));
});
![Node.js实战7:你了解buffer吗?](https://i-blog.csdnimg.cn/blog_migrate/53a2a57ca54126a3ecd58c1f3d92c517.png)
可以看到,默认读取到的数据buf是Buffer类型。
Buffer类型转换为其它格式
将上面的代码,稍做改动,输出buf会是这样:
![Node.js实战7:你了解buffer吗?](https://i-blog.csdnimg.cn/blog_migrate/c2691f5d619cdc388f477b8c4a97aa5c.png)
代码中读取的是test7.js,即本文例程代码。
对代码中的buf用toString()进行格式转换,转为字符串:
![Node.js实战7:你了解buffer吗?](https://i-blog.csdnimg.cn/blog_migrate/ec03474c0038fe637225e3b19c5adb98.png)
输出将会是:
![Node.js实战7:你了解buffer吗?](https://i-blog.csdnimg.cn/blog_migrate/4752b8cd39d2513ba5409e8ffd71412e.png)
注:toString()函数,默认的是转化为utf-8编码。还可转为ascii、utf16le、base64、hex等。
如下例,对base64编码的应用,可以用于字符串加解密:
![Node.js实战7:你了解buffer吗?](https://i-blog.csdnimg.cn/blog_migrate/3bb0174b7dc7f25e5fe28d7923dae995.png)
var user = 'wangliwen';
var pass = 'jshaman.com';
var auth_str = user + ':' + pass;
//不经预定义大小,直接传入字符串来创建buffer
var buf = new Buffer(auth_str);
//加密过程:转为base64编码
var encode = buf.toString('base64');
console.log(encode);
//解密过程
var decode = new Buffer(encode,'base64').toString();
console.log(decode);
实际用途:简单的加解密算法、加密数据传输,如登录校验时。
本文参考资料:
![Node.js实战7:你了解buffer吗?](https://i-blog.csdnimg.cn/blog_migrate/bc55f41966430c699d76e8b97fecb651.png)