02-Node.js—Buffer(缓冲器)

命运对每个人都是一样的,不一样的是各自的努力和付出不同,付出的越多,努力的越多,得到的回报也越多,在你累的时候请看一下身边比你成功却还比你更努力的人,这样,你就会更有动力。

导读:本篇文章讲解 02-Node.js—Buffer(缓冲器),希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

1、概念

  • Buffer 是一个类似于数组的对象 ,用于表示固定长度的字节序列
  • Buffer 本质是一段内存空间,专门用来处理 二进制数据
  • 在buffer中存储的都是·二进制数据·,但是在显示的时候都是以16进制的形式显示。
  • Buffer中的内存不是通过JavaScript 分配的,而是在底层通过C++申请的。
  • 也就是我们可以直接通过Buffer来创建内存中的空间
    在这里插入图片描述

2.、特点

  • Buffer 大小固定无法调整
  • Buffer 性能较好,可以直接对计算机内存进行操作
  • 每个元素的大小为 1 字节(byte)
    在这里插入图片描述

3、创建Buffer

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

3.1 Buffer.alloc

// 创建了一个长度为8字节的Buffer,相当于申请了8子节的内存空间,每个字节的值为0
const buf1 = Buffer.alloc(8)
console.log(buf1.length);
console.log(buf1);

输出:

8
<Buffer 00 00 00 00 00 00 00 00>

3.2 Buffer.allocUnsafe

//创建了一个长度为 8 字节的 Buffer,buffer 中可能存在旧的数据, 可能会影响执行结果,所以叫unsafe
const buf2 = Buffer.allocUnsafe(20)

注解:allocUnsafe在分配内存之前是不会清空数据,如果这些数据恰好保存了用户的一些敏感数据就造成了数据泄露
alloc方法会将内存的数据进行清空之后再分配就会安全很多,但是缺点是性能没有allocUnsafe高

3.3 Buffer.from

//通过字符串创建 Buffer
const buf3  = Buffer.from('hello')
console.log(buf3);

输出结果:

<Buffer 68 65 6c 6c 6f>
//通过数组创建 Buffer
const buf4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])
console.log(buf4);

输出:

<Buffer 69 6c 6f 76 65 79 6f 75>

4、操作Buffer

4.1 Buffer 与字符串的转化

  • 我们可以借助 toString 方法将 Buffer 转为字符串
const buf4 = Buffer.from([105, 108, 111, 118, 101, 121, 111, 117])
console.log(buf4.toString());

输出:

iloveyou

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

4.2 Buffer 的读写

  • Buffer 可以直接通过 数组[ ] 的方式对数据进行处理。
    1.读取
const buf3 = Buffer.from('hello')
console.log(buf3[0]);

输出:

104

输出的是ASCII码值。

  1. 修改
const buf3 = Buffer.from('hello')
console.log(buf3);//改变前
//<Buffer 68 65 6c 6c 6f>
buf3[0] = 97//ASCII值
console.log(buf3);//改变后
//<Buffer 61 65 6c 6c 6f>

在提醒一次,终端输出的时候默认是16进制

我们转化成字符串的形式在看一遍。

const buf3 = Buffer.from('hello')
console.log(buf3.toString());//改变前
//hello
buf3[0] = 97
console.log(buf3.toString());//改变后
//aello

注意:

  1. 如果修改的数值超过 255 ,则超过 8 位数据会被舍弃
const buf = Buffer.from('hello');
buf[0] = 361;// 舍弃高位的数字  0001 0110 1001  => 0110 1001
console.log(buf);
  1. 一个 utf-8 的字符 一般 占 3 个字节
const buf = Buffer.from('你好');
console.log(buf);

输出:

<Buffer e4 bd a0 e5 a5 bd>

参考

尚硅谷2023版Node.js零基础视频教程,nodejs新手到高手

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/144062.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!