Node Buffer模块

在这里插入图片描述

一、初识 Buffer

  • 除了模块之外,Node 还弥补了语言另外一个不足之处,那就是对二进制数据的处理。
  • buffer 是一个表示固定内存分配的全局变量(也就是说,要放到缓冲区中的字节数需要提前定下),它就好比是一个八位字节元素组成的数组,可以有效地在 JavaScript 中表示二进制数据。
  • 实际上 Buffer 中的内存不是通过 JavaScript 分配的,而是在底层通过 C++ 申请的。
  • 我们在使用 buffer 时,不需要引入模块,直接使用即可。
  • 在 buffer 中存储的都是二进制数据,但是在显示时,都是以 16 进制的形式显示。

二、创建 Buffer 类

  • Buffer.alloc(size[, fill[, encoding]]): 返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0
  • Buffer.allocUnsafe(size): 返回一个指定大小的 Buffer 实例,但是它不会被初始化,所以它可能包含敏感的数据
  • Buffer.from(array): 返回一个被 array 的值初始化的新的 Buffer 实例(传入的 array 的元素只能是数字,不然就会自动被 0 覆盖)
  • Buffer.from(arrayBuffer[, byteOffset[, length]]): 返回一个新建的与给定的 ArrayBuffer 共享同一内存的 Buffer。
  • Buffer.from(buffer): 复制传入的 Buffer 实例的数据,并返回一个新的 Buffer 实例
  • Buffer.from(string[, encoding]): 返回一个被 string 的值初始化的新的 Buffer 实例

三、Buffer 的操作

  • 使用 Buffer 保存字符串
let str =  "Hello JavaScript"; 
let buf = Buffer.from(str , "utf-8");
  • 创建指定大小的 Buffer 对象
let buf3 = Buffer.alloc(1024*8)

四、Buffer 的转换

  • Buffer 与字符串间的转换

支持的编码:ASCII、UTF-8、UTF-16LE/UCS-2、Base64、 Binary、Hex

  • 字符串转 Buffer
Buffer.from(str , [encoding]); 
  • Buffer 转字符串
buf.toString([encoding] , [start] , [end]);

五、写入操作

  • 向缓冲区中写入字符串
buf.write(string[, offset[, length]][, encoding])
  • 替换指定索引位置的数据
buf[index]
  • 将指定值填入到缓冲区的指定位置
buf.fill(value[, offset[, end]][, encoding])

六、读取操作

  • 将缓冲区中的内容,转换为一个字符串返回
buf.toString([encoding[, start[, end]]])
  • 读取缓冲区指定索引的内容
buf[index]
  • 读取 Node 缓冲区长度
buf.lenght

七、其他操作

  • 复制缓冲区
buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]]) 
  • 对缓冲区切片
buf.slice([start[, end]]) 
  • 拼接缓冲区
Buffer.concat(list[, totalLength])

八、Buffer 补充

Buffer.isEncoding('utf-8');  // 返回 Boolean,是否支持该编码格式
Buffer.byteLenght() // 计算字节长度(一个汉字即3个字节)
发布了161 篇原创文章 · 获赞 71 · 访问量 3万+

猜你喜欢

转载自blog.csdn.net/qq_44034384/article/details/99777127