node . js中缓冲缓冲器的原理是什么

  介绍

本篇文章给大家分享的是有关node . js中缓冲缓冲器的原理是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。

<强>一、什么是缓冲

缓冲缓冲器是用来存储输入和输出数据的一段内存js语言没有二进制数据类型,在处理TCP和文件流的时候,就不是很方便了。

所以node . js提供了缓冲区类来处理二进制数据,缓冲区类是一个全局变量,缓冲在创建的时候大小就固定了,无法改变。

缓冲区类的实例类似于由字节元素组成的数组,可以有效的表示二进制数据。

<强>二,什么是字节

字节是计算机存储时的一种计量单位,一个字节等于8个位。一个位就代表0或1,每8个位(比特)组成一个字节(字节)。

字节是网络传输数据的基本单位,一个字节最大表示的十进制数是255 .

<强>三,什么是进制

进制是人为定义的带进位的计数方法,常见的有二进制,八进制,十六进制,和十进制。

将任意数字转换成不同进制

console.log(方法(& # 39;12 & # 39;,,2));   console.log(方法& # 39;12 & # 39;,,8));   console.log(方法& # 39;12 & # 39;,,16));   console.log(方法& # 39;12 & # 39;,,10));

转换进制的另一种方法:

console.log ((10) .toString (2));   console.log ((10) .toString (8));   console.log ((10) .toString (16));   console.log ((10) .toString (10)),

<强>四、创建缓冲区的方法

通过缓冲区。alloc来创建指定长度缓冲

//创建6个字节的缓冲区,用0填充数据   let  buf1 =, Buffer.alloc (6);   console.log(来);//指定数字进行填充   let  buf2 =, Buffer.alloc (6,, 2);   console.log (buf2);//也可以指定字符进行填充,第三个参数表示字符编码,默认为utf8   let  buf3 =, Buffer.alloc(6, & # 39;一个# 39;,,& # 39;use utf8 # 39;);   console.log (buf3);

通过缓冲区。allocUnsafe创建未初始化的缓冲,缓冲中的数据是未知的。

let  buf =, Buffer.allocUnsafe (6);   console.log (buf);

通过字节数组创建一个缓冲

let  buf =, Buffer.from ([1,, 2,, 3,, 4,, 5]);   console.log (buf);

通过字符串创建一个缓冲区,第二个参数表示字符编码,一个中文用3个字节表示。

let  buf =, Buffer.from(& # 39;世界你好& # 39;,,& # 39;use utf8 # 39;);   console.log (buf);

<强>五、缓冲区的一些常用方法

通过填满()以指定的数据填充缓冲

let  buf =, Buffer.alloc (12);   console.log (buf);//参数一表示用来填充的值//参数二表示开始的偏移量//参数三表示结束的偏移量//参数四表示字符编码//偏移量的计算是左闭右开的区间,[开始,结束)   buf.fill (0, 1,, 2);   console.log (buf);   buf.fill (2, 2, 4);   console.log (buf);   buf.fill(& # 39;一个# 39;,,4,6);   console.log (buf);

通过写()向缓冲区中写入数据

let  buf =, Buffer.alloc (12);   console.log (buf);//参数一表示要写入的字符串//参数二表示写入的偏移量//参数三表示写入的字节数//参数四表示字符编码   buf.write(& # 39;世界& # 39;,,0,,3);   console.log (buf);   console.log (buf.toString ());   buf.write(& # 39;世界& # 39;,,3,6);   console.log (buf);   console.log (buf.toString ());

通过writeInt8()写入一个8位的整数,注意该整数是带符号的。

let  buf =, Buffer.alloc (12);   console.log (buf);   buf.writeInt8 (1, 0);   buf.writeInt8 (2, 1);   buf.writeInt8 (3,, 2);//注意,8位的整数,如果带符号,区间在,-128年,到,127年,之间   buf.writeInt8 (127,, 3);   console.log (buf);

方法中还有一些writeInt16BE (), writeInt32BE (), writeInt16LE (), writeInt32LE()的方法。

因为不同的CPU架构,有不同的字节序,字节序是指数字在内存中保存的顺序。

以是结尾的,表示大端字节,将高位存储在起始位置。

以勒结尾的,表示小端字节序,将低位存储在起始位置。

let  buf =, Buffer.alloc (6);//将高位存储在起始位置   buf.writeInt16BE (& # 39; 256 & # 39;,, 0),,//, [01, 00, 00, 00, 00, 00)   console.log (buf);//读取要与写入的方法一致,不然数据会错乱。   console.log (buf.readInt16BE (0));   let  buf2 =, Buffer.alloc (6);//将低位存储在起始位置   buf2.writeInt16LE (& # 39; 256 & # 39;,, 0),,//, [00, 01, 00, 00, 00, 00)   console.log (buf2);//读取要与写入的方法一致,不然数据会错乱。   console.log (buf.readInt16LE (0));

node . js中缓冲缓冲器的原理是什么