Buffer
是一个类似于数组的对象
,用于表示固定长度的字节序列
。Buffer
本质是一段内存空间
,专门用来处理 二进制数据
。16进制
的形式显示。内存
不是通过JavaScript 分配的,而是在底层通过C++
申请的。Buffer
来创建内存中的空间
创建 Buffer
的方式主要如下几种:// 创建了一个长度为8字节的Buffer,相当于申请了8子节的内存空间,每个字节的值为0
const buf1 = Buffer.alloc(8)
console.log(buf1.length);
console.log(buf1);
输出:
8
<Buffer 00 00 00 00 00 00 00 00>
//创建了一个长度为 8 字节的 Buffer,buffer 中可能存在旧的数据, 可能会影响执行结果,所以叫unsafe
const buf2 = Buffer.allocUnsafe(20)
注解:
allocUnsafe
在分配内存之前是不会清空数据
,如果这些数据恰好保存了用户的一些敏感数据就造成了数据泄露
。
而alloc方法
会将内存的数据进行清空
之后再分配就会安全很多,但是缺点是性能没有allocUnsafe高
。
//通过字符串创建 Buffer
const buf3 = Buffer.from('hello')
console.log(buf3);
输出结果:
<Buffer 68 65 6c 6c 6f>
//通过数组创建 Buffer
const buf4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])
console.log(buf4);
输出:
<Buffer 69 6c 6f 76 65 79 6f 75>
toString
方法将 Buffer 转为字符串
const buf4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])
console.log(buf4.toString());
输出:
iloveyou
toString
默认是按照utf-8 编码
方式进行转换的。
数组[ ]
的方式对数据进行处理。const buf3 = Buffer.from('hello')
console.log(buf3[0]);
输出:
104
输出的是ASCII码
值。
const buf3 = Buffer.from('hello')
console.log(buf3);//改变前
//
buf3[0] = 97//ASCII值
console.log(buf3);//改变后
//
在提醒一次,终端输出的时候默认是16进制
我们转化成字符串的形式
在看一遍。
const buf3 = Buffer.from('hello')
console.log(buf3.toString());//改变前
//hello
buf3[0] = 97
console.log(buf3.toString());//改变后
//aello
注意:
255
,则超过 8 位数据
会被舍弃const buf = Buffer.from('hello');
buf[0] = 361;// 舍弃高位的数字 0001 0110 1001 => 0110 1001
console.log(buf);
3 个字节
const buf = Buffer.from('你好');
console.log(buf);
输出:
<Buffer e4 bd a0 e5 a5 bd>
尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手