第二章:Buffer

Buffer(缓冲器)

1.概念

Buffer 是一个类似于数组的 对象,用于表示固定长度的字节序列

Buffer 本质是一段内存空间,专门用来处理 二级制数据

Buffer的概念

2.特点

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

Buffer的特点

3.使用

3-1.创建Buffer

Node.js 中创建 Buffer 的方式主要如下几种:

  1. Buffer.alloc

    // 创建了一个长度为10字节的Buffer,相当于申请了10字节的内存空间,每个字节的值为0
    let buf_1 = Buffer.alloc(10)   // 结果为:<Buffer 00 00 00 00 00 00 00 00 00 00>,其输出表示方式是十六进制
    
  2. Buffer.allocUnsafe

    // 创建了一个长度为10字节的Buffer,Buffer中可能存在旧的数据,可能会影响执行结果,所以叫unsafe
    let buf_2 = Buffer.allocUnsafe(10)
    
  3. Buffer.from

    // 通过字符串创建Buffer
    let buf_3 = Buffer.from('hello')
    // 通过数组创建Buffer
    let buf_4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])
    

创建Buffer

3-2.Buffer与字符串的转化

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

// Buffer与字符串的转换
let buf = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])
// 使用toString方法转换为字符串
console.log(buf.toString())     // 默认采用utf-8

Buffer转为字符串

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

3-3.Buffer的读写

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

let buf_2 = Buffer.from('hello')
console.log(buf_2[0].toString(2))   // 得到的结果是二进制
console.log(buf_2)
// 读取
console.log(buf_2[0])   // 得到的结果为十进制
// 修改
buf_2[0] = 95
console.log(buf_2)
// 查看字符串结果
console.log(buf_2.toString())

Buffer的读写

注意:

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

4.注意事项

4-1.溢出问题

众所周知,二进制所能存储的最大数字是 255,一旦超过这个,计算机就会舍弃掉高位的

let buf_3 = Buffer.from('hello')
buf_3[0] = 361
// 0001 0110 1001 => 0110 1001(舍弃高位后的二进制)
console.log(buf_3)
console.log(buf_3.toString())

溢出问题

4-2.中文字符创建 Buffer

通过中文字符串来创建 Buffer,我们可以发现 一个 utf-8 的中文字符是占三个字节的

let buf_4 = Buffer.from('你好')
console.log(buf_4)

中文字符创建 Buffer

  • 7
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值