2.Node.js 缓冲器(Buffer)

二、常用模块

2.1Buffer(缓冲器)

2.1.1概念

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

Buffer本质是一段内存空间,专门用来处理二进制数据

2.2.2特点

Buffer大小固定无法调整;

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

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

2.2.3创建Buffer
js 复制代码
//创建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())

输出:

js 复制代码
//创建了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的读写
js 复制代码
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())

输出:

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

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

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

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

输出:

js 复制代码
修改前: <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关于中文
python 复制代码
let buf1=Buffer.from('你好')
console.log(buf1)

输出:

js 复制代码
//在utf-8的编码格式下,每个中文字占三个字节
<Buffer e4 bd a0 e5 a5 bd>
相关推荐
Ztiddler7 小时前
【npm设置代理-解决npm网络连接error network失败问题】
前端·后端·npm·node.js·vue
前端青山8 小时前
webpack进阶(一)
前端·javascript·webpack·前端框架·node.js
老攀呀10 小时前
安装多个nodejs版本(nvm)
node.js
佚名程序员10 小时前
【Node.js】全面解析 Node.js 安全最佳实践:保护您的应用
安全·node.js
zxg_神说要有光1 天前
快速入门 AI:调用 AI 接口生成 React 组件
前端·javascript·node.js
佚名程序员1 天前
【Node.js】深入理解 V8 JavaScript 引擎
前端·javascript·node.js
赵闪闪1681 天前
Node.js 安装与开发环境配置全指南
node.js
前端与小赵1 天前
什么是Webpack,有什么特点
前端·webpack·node.js
生椰拿铁You1 天前
03 —— Webpack 自动生成 html 文件
前端·webpack·node.js
赵闪闪1681 天前
Node.js 安装与环境配置详解:从入门到实战
node.js·编辑器·vim