10.2.2 Buffer 缓冲器

返回目录
上一篇
下一篇

1. 简介

Buffer是一个类似于数组的对象,书写形式为 < 元素 元素 元素 >;Buffer实际上是一个专门保存二进制数据<>的容器

2. 特点

  • 大小固定:在创建的时候就确定了,且无法调整
  • 性能较好:可以直接对计算机的内存进行操作(因为计算机也是二进制,Buffer也是二进制,操作起来非常方便)
  • 每个元素大小为1字节(byte)

关于单位换算

1Bit 对应的是1个二进制
8Bit = 1 字节(Byte1)
1024Byte = 1KB
1024KB = 1MB
1024MB = 1GB
1024GB = 1TB

3. 使用

3.1 Buffer创建

  • 直接创建 Buffer.alloc

创建一个()里数据为长度的Buffer
每次创建都是一样且为初始化

  • 不安全创建 Buffer.allocUnsafe

每次创建都不一样
创建Buffer的时候,该方法没有进行空间的初始化

  • 通过数组和字符串创建 Buffer.from

代码书写

// 直接创建	Buffer.alloc
let buf =Buffer.alloc(9);

// 输出后--> <Buffer 00 00 00 00 00 00 00 00 00 > 
// 每次创建都是一样且为初始化
// 创建一个()里数据为长度的Buffer

//--------------------------------------------

// 不安全创建 Buffer.allocUnsafe
let buf = Buffer.allocUnsafe(9);

// 输出后--> <Buffer 01 23 54 23 78 1a 56 34 59> 
// 每次创建都不一样
// 创建Buffer的时候,该方法没有进行空间的初始化

// ------------------------------------------

// 通过数组和字符串创建 Buffer.from
let buf = Buffer.from('wudipakeke');

// 输出后--> <Buffer 77 75 64 69 70 61 6b 65 6b 65>

3.2 Buffer 的读取和写入

Buffer 的读取和写入是一样的
通过索引对Buffer内的数据进行读取(类似与数组的读取方法)

  • 对每一个数据单独读取&写入,通过索引下标方式读取&写入,读取&写入为十进制的数据。

把ASCCII 中的数字转换为字符,通过string.fromCharCode() 方法

  • 将Buffer数据整体转换为字符串,通过toString()方法。

代码书写

// 读取
// 通过索引读取Buffer中的数据
let buf = Buffer.from('wudipakeke');
buf[0];   

// 119  输出为十进制的数字(默认输出)
// 可以把十进制的数字转换为二进制的数字

// ------------------------------------------

// 用 toString() 方法把Buffer转换为字符串
buf.toString();

// 输出为 wudipakeke 

// =========================================
// 写入(设置)
// 通过索引写入(设置)Buffer中的数据
buf[0] = 120;

//-------------------------------------
buf.toString()

// 输出为 xwudipakeke 

扩展

// 把ASCCII 中的数字转换为字符
string.fromCharCode(119);
// 把ASCCII 中的字符转换为数字
'字符'.charCodeAt();

3.3 关于溢出

溢出的高位数据会舍弃(高位舍弃)

高位舍弃过程
是从左边开始舍弃 --> 只保留后八位 --> 转化为十进制 --> 再从ASCCII表找到相应字符

3.4 关于中文

一个 UTF-8 的中文字符大多数情况都是占 3 个字节

中文汉字:
字节数 : 2;编码:GB2312
字节数 : 2;编码:GBK
字节数 : 2;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 3;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE

英文字母:
·字节数 : 1;编码:GB2312
字节数 : 1;编码:GBK
字节数 : 1;编码:GB18030
字节数 : 1;编码:ISO-8859-1
字节数 : 1;编码:UTF-8
字节数 : 4;编码:UTF-16
字节数 : 2;编码:UTF-16BE
字节数 : 2;编码:UTF-16LE

附录
Unicode编码表
Unicode汉字编码表
中英文占字符节规定

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值