Buffer的结构和数组很像(它的元素为16进制的两位数),操作的方法也和数组类似
在客户端与服务器交流的过程中,服务器不仅会返回字符串,还会返回音频视频图片等形式(通常称为:二进制文件),js原生的数组并不能满足这些要求,而 Buffer 就是专门用来存储这些数据的。存储时都是二进制,显示时以16进制形式显示
客户端发送的数据都是2进制,存放在 buffer 中,发送回客户端时也是2进制,所以称为缓冲区
Buffer 是 Node 中扩充的对象,可以直接使用
———————————————————————————————————————————
var 变量名=Buffer.from(所存内容);
之后打印出来的 <Buffer 68 65 6c 6c 6f> 这些即为 hello 的16进制码
利用 toStrng 转换为字符串
toStrng 可以将缓冲区中的数据转换为字符串
在这里,buffer 的大小是根据 字符串所占字节的多少来判定的
--------------------------------------------------------------------------------------------------------------------------------
创建指定大小的 buffer
使用 Buffer.alloc()或 Buffer.allocUnsafe()这两种方法
这里我们直接打印 buf
可以看到 buf 包含10个00,因为长度定义为10,00是因为这是空的 buf 还未赋值
通过索引来操作 buffer 中的元素
PS:因为 buffer 中的元素显示的时候为 16 进制,所以30变成了1e
buffer中每个值最大不能超过 255,否则转16进制时会自动舍弃一部分从而变更
当然也可以直接往里添加16进制【采用0x开头】
PS:16进制最大到f,所以 f 之后的字母都不可以 0x
buffer 里面的空间都是连续的,大小一旦确定则不能更改【buffer 实际上是对底层内存的直接操作。例如 Buffer.alloc,alloc的意思是分配,它的实际意思就是在内存中分配字节,来存放 buffer ,所以实际上每一个 buffer 在底层都对应着内存中的每一块区域】
---------------------------------------------------------------------------------------------------------------------------------
读取 buffer 中的元素
本应该打印 dd 变成了 221,涉及到知识点
只要数字在控制台或页面中输出一定是10进制,但是利用 .toString() 方法可以更改进制
Buffer.alloc 分配空间时会清除内存中其数据
Buffer.allocUnsafe 分配时不会清除【别人使用过的内存可能会被原封不动拿过来使用,因此存在安全隐患】