Node.js学习(三)——Nodejs基础(Buffer)

一、Buffer

1、Buffer(缓冲区)

1.1小记:

  1. JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
  2. 但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,数组中不能存储二进制文件,而Buffer专门存储二进制数据。
  3. 一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。
  4. 实际上一个元素就表示内存中的一个字节。
  5. 实际上Buffer中的内存不是通过JavaScript 分配的,而是在底层通过C++申请的。也就是我们可以直接通过Buffer来创建内存 中的空间。
  6. 使用buffer不需要引入模块可以直接使用。
  7. 在buffer中存储的都是二进制数据,但显示时都是16进制形式显示。buffer中每一个元素的范围是从00-ff

1.2 创建

1.2.1 Buffer.alloc()

常规都会new buffer(256)等,但是因为在V8版本后或其他原因被启用,就不讲解new buffer了。
在这里插入图片描述
官方文档之处可以用buff.alloc(siz)创建buffer

在这里插入图片描述
提示:
计算机一个0 或一个1 我们称为1位(bit);
8bit=1byte(字节) 1024kb = 1mb
当我们创建了一个10字节的buffer(buffer的大小被设置后不可更改)
在使用buffer.alloc()的时候会清空内存,然后创建十个长度的数组,顺序存放值(buffer是对内存直接操作的)
在这里插入图片描述
在我们输出之后,发现:因为定义的buffer为10字节,在buffer中存储的都是二进制数据,但显示时元素都是16进制形式显示。
buffer中每一个元素的范围是16进制的00-ff(即为十进制:0-255)
二进制数为:0000 0000到1111 1111
当我们超过255之后;如556的
二进制数为:10 0010 1100(12位)。就会导致存储不上,为什么会出现16进制的2c.那是因为16进制数2c的
二进制为:0000 0010 1100会发现556的
二进制为:0010 0010 1100得出结论,因为只能存八位二进制数,多余的两位会从后往前数8位舍去。
想要输出十进制,或其他的话可使用tostring().

1.2.2 Buffer.allocUnsale()

这里我们使用官方文档给我们提供的一个buffer.allocUnsafe()方法创建。会发现此方法没有清内存直接就将数据存放到数组中。(这样一是不安全,但效率速度会更高,因为之前提到啊啊alloc会清内存后在存数据)

在这里插入图片描述

1.2.3 Buffer.from(str)

Buffer.from(str):将字符串转换为buffer二进制数据。
(用户发来的请求等都是转换为buffer)
在这里插入图片描述

1.3 小结:

使用Buffer目的就是将想要的文件转换为二进制文件。官方文档会有很多具体使用方法在此不多提了。在这里插入图片描述

二、结论

以上是buffer部分,后续可能会更新等。buffer作为缓冲区存储内容十分常用。一定要掌握

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值