Node Buffer理解学习

一、理解Buffer 

  数据流(stream)是将数据从一个地方传输到另一个地方的过程。  

  传输数据的目的往往是为了使用(处理)它,当处理的数据比传入的数据慢的时候,这些数据就会需要等待。  

  通俗易懂的说法,就如同我们去车站坐车一样,当第一辆车满了的时候,我们就需要等待第二辆车的到来;或者第一辆车已经到了,但是我们人还没有到达车站,这时候车辆就需要等待车坐满后再发车。这个等待的区域我们可以理解为buffer。

  如果难以理解,可以去看这个大佬的文章,他解释的非常清楚https://juejin.cn/post/6844903688188723208

二、使用

  1.对于buffer的创建有几种不同的形式。

// 法一---------创建一个10字节的空buffer
Buffer.alloc(缓冲区的大小,要填充缓冲区的值(默认0),用于指定缓冲区的值是字符串时的值(默认为utf8))
const buf_1 = Buffer.alloc(10);
console.log(buf_1);//<Buffer 00 00 00 00 00 00 00 00 00 00>
const buf_1 = Buffer.alloc(10,20);
console.log(buf_1);//<Buffer 14 14 14 14 14 14 14 14 14 14>
// 法二----------创建一个10字节的空buffer
const buf_1 = Buffer.allocUnsafe(10);//此方法和alloc方法类似,但是这个方法在创建buffer的时候并没有将其缓存重置,不太安全
console.log(buf_1);//<Buffer 00 00 00 00 00 00 00 00 00 00>
const buf_1 = Buffer.allocUnsafe(1000000);//当将创建的缓冲区大小放大时,使用这个可以发现创建的buffer并不是空的,而且每次执行值都不一样
console.log(buf_1);
//
法三--------根据数据来创建buffer
const buf_1 = Buffer.from("I Love You");
console.log(buf_1);
//<Buffer 49 20 4c 6f 76 65 20 59 6f 75>

   2.超出阈值

  Buffer每一位为八个二进制,最大即255,当超过这个阈值的时候,Buffer采用的是高位截取法,即将数值转为二进制后,将超出八位的全部截掉。

const buf_1 = Buffer.from("hello");
console.log(buf_1);//<Buffer 68 65 6c 6c 6f>
buf_1[0] = 361;//0001 0110 1001    截取八位后为0110 1001 = 69
console.log(buf_1);//<Buffer 69 65 6c 6c 6f>

  3.转换

  Buffer可以通过toString()来进行转换,具体如下

const buf_1 = Buffer.from("hello");
console.log(buf_1);//<Buffer 68 65 6c 6c 6f>
console.log(buf_1[0].toString(2))//1101000
console.log(buf_1[0].toString(10))//104
console.log(buf_1[0].toString(16))//68
console.log(buf_1.toString()) //hello

 

posted @ 2023-08-02 11:19  奔跑的哈密瓜  阅读(7)  评论(0编辑  收藏  举报