Buffer

更新时间: 2024-10-22 11:47:27

# Buffer介绍与创建

# 概念

Buffer中文译为【缓冲区】,是一个类似于Array的对象,用于表示固定长度的字节序列

换句话说,Buffer就是一段固定长度的内存空间,用于处理二进制数据

# 特点

  1. Buffer大小固定且无法调整
  2. Buffer性能好,可以直接怼计算机内存进行操作
  3. 每个元素的大小为1字节(byte)

# 创建

  • alloc 用alloc创建的Buffer,每一个二进制位都会归零
let buf = Buffer.alloc(10)
console.log(buf)
// <Buffer 00 00 00 00 00 00 00 00 00 00>
1
2
3
  • allocUnsafe 使用allocUnsafe创建的Buffer可能会包含旧的内存数据,但是用这种方式创建会比较快
let buf_2 = Buffer.allocUnsafe(10)
console.log(buf_2)
// <Buffer 00 00 00 00 00 00 00 00 00 00>
1
2
3
  • from 可以将字符串或数组转换为Buffer
let buf_3 = Buffer.from('hello')
console.log(buf_3)
// <Buffer 68 65 6c 6c 6f>
1
2
3

# Buffer与字符串的转化

我们可以借助toString方法将Buffer转为字符串

toString默认是按照 utf-8 编码方式进行转换的

let buf_4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])
console.log(buf_4.toString())
// iloveyou
1
2
3

# Buffer的读写

Buffer可以直接通过[]的方式对数据进行处理

let buf_4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])

// 读取
console.log(buf_4[1])

// 修改
buf_4[1] = 97

console.log(buf_4.toString())
// iaoveyou
1
2
3
4
5
6
7
8
9
10

注意

  1. 如果修改的数值超过255, 则超过8位数据会被舍弃
  2. 一个utf-8的字符一般占3个字节