Buffer 介绍与操作

Buffer 介绍与操作一 Buffer 的意思 中文译为缓冲区 是一个类似于 Array 的对象 用于表示固定长度的字节序列 简言而之 Buffer 就是一段固定长度的内存空间 用于处理二进制数据 二 Buffer 特点 1 大小固定无法调整 2 性能较好可直接对计算机内存进行操作 3 每个元素大小为 1 字节 三

大家好,我是讯享网,很高兴认识大家。

一、Buffer的意思

中文译为缓冲区,是一个类似于Array的对象,用于表示固定长度的字节序列

简言而之,Buffer就是一段固定长度的内存空间,用于处理二进制数据

二、Buffer特点

1.大小固定无法调整

2.性能较好可直接对计算机内存进行操作

3.每个元素大小为1字节

三、Buffer的应用

(1)创建缓冲区

1》alloc

每一个二进制位都会归0

// 创建缓冲区 let buf1=Buffer.alloc(10); console.log(buf1); //<Buffer 00 00 00 00 00 00 00 00 00 00>

讯享网
2》allocUnsafe

不安全,用allocUnsafe创建的Buffer可能会包含旧的内存数据。但是allocUnsafe的速度比alloc要快


讯享网

讯享网let buf2=Buffer.allocUnsafe(10); console.log(buf2); //<Buffer 00 00 00 00 00 00 00 00 00 00>

(2)写数据到缓冲区

1》write
const buf1=Buffer.alloc(20); var buf2=Buffer.from('Hello world'); buf1.write('天天向上'); console.log(bf1.toString()); //天天向上 // 将数据写入流方法 .write('写入数据的内容','写入数据的开始位置','写入数据的长度') // 注意:“好好学习”有4个字符,每个字符在UTF-8编码中通常占用1到3个字节,所以会出现�这种乱码的情况 buf1.write('好好学习',10,10) console.log(bf1.toString()); //天天向�好好学

(3)读取缓冲区

讯享网buf1.write('天天向上'); console.log(buf1.toString('utf8')); //天天向�好好学 console.log(buf1.toString('utf8',10,13)); //好

buf.toString([encoding[, start[, end]]])

encoding:使用的编码,默认为 'utf8';

start:指定开始读取的索引位置,默认为 0;

end :结束位置,默认为缓冲区的末尾。

(4)缓冲区间的拼接

buf1.write('好好学习'); buf2.write('天天向上'); var buf3=Buffer.concat([buf1,buf2]); console.log(buf3.toString()); //天天向�好好学Hello world

四、Buffer的操作

(1)Buffer与字符串的转化

1》将一个字符串或者数组转为Buffer

Buffer.from()方法
讯享网let buf3=Buffer.from('love'); let buf4=Buffer.from([102,56,98]); console.log(buf3); //<Buffer 6c 6f 76 65> console.log(buf4); //<Buffer 66 38 62>
2》将Buffer转为一个字符串或者数组
toString()方法
//将Buffer转为字符串 let buf4=Buffer.from([105,108,111,118,101,121,111,117]); console.log(buf4.toString()); //iloveyou

(2)Buffer里面对于单个元素的查看 []

获取第一个元素h里面所保存的数据,注意是十进制的表示形式

讯享网let buf=Buffer.from('hello'); console.log(buf[0]); //104 // 获取二进制的表示形式,可在后面加一个toString(2) console.log(buf[0].toString(2)); //0

(3)Buffer里面对于单个元素的修改

console.log(buf); //<Buffer 68 65 6c 6c 6f> buf[0]=95; console.log(buf); //<Buffer 5f 65 6c 6c 6f>

(4)Buffer的溢出与中文 (了解即可)

1》溢出 (舍弃高位的数字)

以let buf=Buffer.from('hello');为例

讯享网//buffer二进制位所能存储的最大数字是255 buf[0]=361; //舍弃高位的数字 所以正常的是0001 0110 1001 变成了 0110 1001 console.log(buf); //<Buffer 69 65 6c 6c 6f>
2》中文
let buf2=Buffer.from('你好'); console.log(buf2); //<Buffer e4 bd a0 e5 a5 bd> //此时结果是6个字节而非两个字节,因为这两个中文是utf-8的中文,一个utf-8的中文一般占3个字节

小讯
上一篇 2025-01-28 16:35
下一篇 2025-03-17 17:57

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/15000.html