Node.js

Node入门

        在Nodejs中我们不可以使用BOM和DOM,只能使用Nodejs为我们提供的API,在Nodejs中global称作顶级对象,在ES2020中我们还可以通过globalThis去访问.

Buffer模块

        Buffer中文译为(缓冲区),是一个类似于Array的对象,用于表示固定长度的字节序列.简单来说Buffer就是一段固定长度的内存空间,用于处理二进制数据.

Buffer特点

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

创建Buffer

        我们可以通过三种方式去进行Buffer的创建.

  1. 第一种使用Buffer里面的alloc方法去进行创建,需要注意的是通过alloc创建的Buffer会清空内存数据,重新初始化为0
  2. 第二种我们使用allocUnsafe创建的Buffer不会出现清空驻留在内存中的旧数据
  3. 第三种我们可以使用form()方法,里面写入的是需要被转换的内容,当然数组也可以转换存为Buffer只需要在传入的时候加上[]即可
// alloc
const buf = Buffer.alloc(10)
// 使用alloc创建出来的Buffer会清空内存中的旧数据,把他们初始为0
console.log(buf)

// allocUnsafe
const buf_1 = Buffer.allocUnsafe(100)
// 使用allocUnsafe创建出来的Buffer会出现内存复用的问题,不会清空内存中的旧数据
console.log(buf_1)

// from
const buf_3 = Buffer.from('Hello')
// from可以把字符串转换为二进制的数据进行存储,还可以把数组也转换为Buffer
const arr = Buffer.from([105,108,111,118,101,121,111,117])
// 在转换的时候会转换为ASSCII码表中对应的字符,得到的是十六进制的数据
console.log(buf_3)
console.log(arr)

操作Buffer

        当我们尝试去读取一个Buffer里面的内容的时候需要使用toStirng()去转换为字符串,当然你如果希望转换为二进制的话可以在里面写入2,可以得到转换为对应的二进制数据.

        当我们的Buffer是一个数组的时候,如果我们需要使用的是数组里面的第一个元素,我们可以通过Buffer_name[index]的方式去访问该Buffer里面数组下标对应的数据内容.        

        Buffer也存在溢出的情况,因为Bouffer是转换为二进制存储到变量中的,在存储的时候Buffer会舍弃高位.拿361举例子,361表示的二进制是0001 0110 1001,在通过Buffer舍弃高位后得到的结果为0100 1001 也就是说他会舍弃最高位的内容,保存两个字节信息.

        我们直接输出Buffer里面存储的信息的时候,他是默认以十六进制输出的,这点需要留意.如果我们像Buffer里面去存入一个中文的时候默认占用的是三个字节.

const arr = Buffer.from([105,108,111,118,101,121,111,117])
// 读取arr这个变量里面存储的Buffer中的数组,让他按照utf-8的形式进行编码输出
console.log(arr.toString())
// 读取arr里面下标为0的元素,用二进制的形式转换输出
// 我们可以通过[]进行对Buffer的读取和写入
console.log(arr[0].toString(2)) // 1101001
// 输出原来arr变量里面的Buffer
console.log(arr)
arr[0] = 95
console.log(arr)


// 溢出
let arr = Buffer.from([105,108,111,118,101,121,111,117])
/*
    因为转换出来时二进制的数据,所以在node里面他会舍弃高位
    0001 0110 1001 ==> 表示的是361的二进制
    在node里面舍弃高位后得到的结果就是  0110 1001

*/
arr[0] = 361
console.log(arr)    // 直接输出是以十六进制进行输出的
console.log(arr[0])     // 取Buffer里面的第0个输出的是十进制
console.log(arr[0].toString(2))		// 以二进制进行输出


// 中文
let arr = Buffer.from('苏颜')
// 在utf-8编码的时候一个中文默认占的是三个字节
console.log(arr)

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Suyanqa

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值