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)

相关推荐

  • 如何准备好一场vue面试

    导读:本篇文章讲解 如何准备好一场vue面试,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    2022年11月9日
    00
  • 07-Node.js—包管理工具

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

    导读:本篇文章讲解 07-Node.js—包管理工具,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    前端开发 2023年5月24日
    00
  • 前端常见的 5 种嵌套太深的场景及解决方案

    嵌套太深的代码可读性差,可维护性差。让人产生“敬畏感”。比如: fetchData1(data1 =>  fetchData2(data2&nb…

    2022年10月26日
    00
  • JavaScript Blob 对象详解

    勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

    导读:本篇文章讲解 JavaScript Blob 对象详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    前端开发 2023年4月28日
    00
  • CSS文本溢出显示省略号方法之让后端写

    导读:本篇文章讲解 CSS文本溢出显示省略号方法之让后端写,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    前端开发 2022年5月12日
    00
  • 【一文就够】浏览器缓存机制详细知识点梳理

    导读:本篇文章讲解 【一文就够】浏览器缓存机制详细知识点梳理,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    2022年5月27日
    00
  • 14. Vue 常用列表操作实例 – 根据关键字实现数组的过滤

    需求 前面介绍了列表操作中的数据新增、删除的功能,本篇章来看看关键字查询的功能。 处理步骤 在VM实例中定义「关键字」参数searchName. var vm = new Vue(…

    2022年9月26日
    00
  • XML的生成和解析

    导读:本篇文章讲解 XML的生成和解析,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

    前端开发 2023年1月19日
    00
  • Vue中 前端实现生成 PDF 并下载

    勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

    导读:本篇文章讲解 Vue中 前端实现生成 PDF 并下载,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    前端开发 2023年4月28日
    00
  • JavaScript 对象(Object)常用方法详解

    勤奋不是嘴上说说而已,而是实际的行动,在勤奋的苦度中持之以恒,永不退却。业精于勤,荒于嬉;行成于思,毁于随。在人生的仕途上,我们毫不迟疑地选择勤奋,她是几乎于世界上一切成就的催产婆。只要我们拥着勤奋去思考,拥着勤奋的手去耕耘,用抱勤奋的心去对待工作,浪迹红尘而坚韧不拔,那么,我们的生命就会绽放火花,让人生的时光更加的闪亮而精彩。

    导读:本篇文章讲解 JavaScript 对象(Object)常用方法详解,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

    前端开发 2023年4月28日
    00

发表回复

登录后才能评论