Node3--Buffer

计算机中的度量单位
1 B(Byte字节) = 8 bit(位)
1 KB = 1024 B
1 MB = 1024KB
1 GB = 1024MB

Buffer

node全局对象中,用来存储字节数据的一个类。
Buffer对象本质就是一个数组
创建一个指定大小的Buffer:

Buffer.alloc(size[, fill[, encoding]])

根据数组/字符串创建一个Buffer对象:

Buffer.from(string[, encoding])

在这里插入图片描述

练习
let buff1 = Buffer.alloc(3); //只指定大小,未指定数据:默认以0填充
console.log(buff1);//<Buffer 00 00 00>
let buff2 = Buffer.alloc(5,18); //指定大小和初始数据,将十进制转化为十六进制填充
console.log(buff2);//<Buffer 12 12 12 12 12>
let buff3 = Buffer.from('abc'); //将字符串中的英文字母转化为asc码值的十六进制
console.log(buff3);//<Buffer 61 62 63>
let buff4 = Buffer.from('字节数据','utf8');//中文要指定编码方式utf8,而且每个中文需要3个字节
console.log(buff4);//<Buffer e5 ad 97 e8 8a 82 e6 95 b0 e6 8d ae>
let buff5 =Buffer.from([11,2,3]); //将数组中的数据转换为十六进制返回
console.log(buff5);//<Buffer 0b 02 03>
buff5[0] = 4; //buffer对象本质上是一个数组
console.log(buff5);//<Buffer 01 02 03>

Buffer实例方法

1.将二进制数据转换成字符串buf.toString();
返回: <string> 转换后的字符串数据。

2.往Buffer中写入数据 buf.write(string[, offset[, length]][, encoding])
string <string> 要写入 buf 的字符串。
offset <integer> 开始写入 string 之前要跳过的字节数。默认值: 0。
length <integer> 要写入的字节数。默认值: buf.length - offset。
encoding <string> string 的字符编码。默认值: 'utf8'。
返回: <integer> 已写入的字节数。


3.从指定位置截取新Buffer buf.slice([start[, end]])
start <integer> 新 Buffer 开始的位置。默认值: 0。
end <integer> 新 Buffer 结束的位置(不包含)

练习:
let buff1 = Buffer.alloc(5);
buff1.write('abcdefgg'); //将字符串的前五位转化成十六进制字节,写入Buffer数组并返回
console.log(buff1);//<Buffer 61 62 63 64 65>

let buff2 = Buffer.alloc(5);
buff2.write('abcdefg',1); //Buffer数组的第一位取0,第二到第五位取字符串的第1-4位转换成十六进制返回
console.log(buff2);//<Buffer 00 61 62 63 64>
console.log(buff2.toString());// abcd

let buff3 = Buffer.alloc(5);
buff3.write('abcdefg',2,3); //Buffer数组的前两位取0,读取字符串前3位并返回
console.log(buff3);//<Buffer 00 00 61 62 63>
console.log(buff3.toString());//  abc

let buff4 = Buffer.from('abcsg'); //
console.log(buff4.slice(2,4).toString());//取字符串中索引为2和3的字符,返回   结果为cs

Buffer静态方法

1.检查是否支持某种编码格式
Buffer.isEncoding(encoding)

2.检查是否是Buffer类型对象
Buffer.isBuffer(obj)

3.获取Buffer实际字节长度
Buffer.byteLength(string[, encoding])
注意点: 一个汉字占用三个字节

4.合并Buffer中的数据
Buffer.concat(list[, totalLength])
练习:
let res1 = Buffer.isEncoding('gbk');
console.log(res1);//false

let obj1 = {};
console.log(Buffer.isBuffer(obj1));//false
let obj2 = Buffer.alloc(1);
console.log(Buffer.isBuffer(obj2));//true

let buff1 = Buffer.from('123');
console.log(Buffer.byteLength(buff1));//3
let buff2 = Buffer.from('判断字节');
console.log(Buffer.byteLength(buff2));//12
console.log(buff2.length);//12

let buff3 = Buffer.from('aaa');
let buff4 = Buffer.from('xxx');
console.log(Buffer.concat([buff1,buff3,buff4]));//<Buffer 31 32 33 61 61 61 78 78 78>


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值