Buffer
更新时间: 2024-10-22 11:47:27
# Buffer介绍与创建
# 概念
Buffer中文译为【缓冲区】,是一个类似于Array的对象,用于表示固定长度的字节序列
换句话说,Buffer就是一段固定长度的内存空间,用于处理二进制数据
# 特点
- Buffer大小固定且无法调整
- Buffer性能好,可以直接怼计算机内存进行操作
- 每个元素的大小为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
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
2
3
- from 可以将字符串或数组转换为Buffer
let buf_3 = Buffer.from('hello')
console.log(buf_3)
// <Buffer 68 65 6c 6c 6f>
1
2
3
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
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
2
3
4
5
6
7
8
9
10
注意
- 如果修改的数值超过255, 则超过8位数据会被舍弃
- 一个utf-8的字符一般占3个字节