当前位置: 首页 > article >正文

2.Node.js 缓冲器(Buffer)

二、常用模块

2.1Buffer(缓冲器)

2.1.1概念

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

Buffer本质是一段内存空间,专门用来处理二进制数据
在这里插入图片描述

2.2.2特点

Buffer大小固定无法调整;

Buffer性能较好,可以直接操作计算机内存;

每个元素的大小为1个字节(byte)。

在这里插入图片描述

2.2.3创建Buffer
//创建Buffer的三种方式

//1、alloc会把内存空间全部置0
let buf1=Buffer.alloc(10);
console.log('buf1:',buf1)

//2、allocUnsafe不会把内存空间全部置0,可能会有之前别的程序留下来的数据
let buf2=Buffer.allocUnsafe(10)
console.log('buf2:',buf2)

//3、from
let buf3=Buffer.from('sally')
let buf4=Buffer.from([73,32,108,111,118,101,32,83,97,108,108,121])
console.log('buf3:',buf3)
console.log('buf4:',buf4)
//将buf4转换成字符串(unicode码)
console.log('buf4_tostring:',buf4.toString())

输出:

//创建了1个10字节的内存空间,每个内存空间都会置0
buf1: <Buffer 00 00 00 00 00 00 00 00 00 00>
//创建了1个10字节空间,每个内存空间如果有旧数据的话,不会置0
buf2: <Buffer 00 00 00 00 00 00 00 00 00 00>
//将字符转换为unicode码(16进制)
buf3: <Buffer 73 61 6c 6c 79>
//将数组转换成16进制
buf4: <Buffer 49 20 6c 6f 76 65 20 53 61 6c 6c 79>
//将Buf4转换成字符串
buf4_tostring: I love Sally
2.2.4Buffer的读写
buf1=Buffer.from('hello')
console.log('第一个字节h的ASCII码(十进制):',buf1[0])
console.log('第一个字节h的ASCII码(二进制):',buf1[0].toString(2))

buf1[0]=105
console.log('修改了第一个字节后的buf1:',buf1.toString())

输出:

第一个字节h的ASCII(十进制): 104
第一个字节h的ASCII(二进制): 1101000
修改了第一个字节后的buf1: iello
2.2.5Buffer 溢出

Buffer的每个元素是一个字节,也就是8位。最大能存储的十进制数是255(11111111),如果给一个元素存入一个大于255的数字,它会把高于8位的部分舍弃。

如:我们存入一个数字511(00000001 11111111),它会把前面8位舍弃,最终只会存入255(11111111)

let buf1=Buffer.alloc(10)
console.log('修改前:',buf1)
buf1[0]=511
console.log('修改后:',buf1)

输出:

修改前: <Buffer 00 00 00 00 00 00 00 00 00 00>
//写入的是511,结果只保留了后8位,ff为16进制,转换成2进制就是11111111,转换成10进制就是255
修改后: <Buffer ff 00 00 00 00 00 00 00 00 00>
2.2.6关于中文
let buf1=Buffer.from('你好')
console.log(buf1)

输出:

//在utf-8的编码格式下,每个中文字占三个字节
<Buffer e4 bd a0 e5 a5 bd>

http://www.kler.cn/news/350896.html

相关文章:

  • 格姗知识圈博客网站开源了!
  • 关于希尔排序的理解
  • 求刚体移动后的转换矩阵
  • 装了Ubuntu和Windows双系统,如何设置默认启动Windows
  • Electron调用nodejs的cpp .node扩展【非安全】
  • 异地组网最简单的方法
  • Excel:vba实现批量修改文件名
  • 【pytorch】昇思大模型配置python的conda版本
  • Elasticsearch:Redact(编辑) processor
  • 地级市-节能环保支出数据(2007-2021年)
  • Java之泛型详解
  • 全星魅科技|应急卫星电话|北斗短报文终端|北斗三号短报文终端
  • python爬虫快速入门之---Scrapy 从入门到包吃包住
  • 武汉正向科技|焦炉移动机车连锁控制系统的介绍
  • Python AdaBoost自适应提升算法
  • |智能门票|008_django基于Python的智能门票设计与实现2024_i16z2v70
  • 大语言模型实战教程首发:基于深度学习的大规模自然语言处理模型LLM详解 -Shelly
  • 【Python系列】python打印获取异常信息
  • 京东Android最全面试题及参考答案
  • PyQt 入门教程(3)基础知识 | 3.1、使用QtDesigner创建.ui文件
  • 日本AZBIL山武燃烧控制器AUR450C82310D0说明书
  • Python logging模块实现日志饶接 按照时间命名
  • Spring Cloud微服务技术选型指南
  • VMWare NAT 模式下 虚拟机上不了网原因排查
  • CSDN怎么发布收费文章
  • Android12.0进入默认Launcher前黑屏的解决办法