搜索
写经验 领红包
 > 电器

odejs中buffe的作用(odejsbuffe转网络流)

导语:「NodeJS」 buffer相关api使用

nodejs中buffer的作用(nodejs buffer转网络流)

buffer用于处理理二进制数据,在v8堆外分配物理理内存,buffer实例例类似0-255之间的整数数组,显示的数据为十六进制,大小是固定的,无法修改。

一. 创建buffer
Buffer.alloc(size[, fill[, encoding]]):size 新 Buffer 的所需长度。fill ||| 用于预填充新 Buffer 的值。默认值: 0 。encoding 如果 fill 是一个字符串串,则这是它的字符编码。默认值: ‘utf8’
console.log(Buffer.alloc(10));//创建⼀一个⻓长度为10的Buffer,默认填充0console.log(Buffer.alloc(10,2));//创建⼀一个⻓长度为10的Buffer,填充2console.log(Buffer.alloc(10,100));//创建⼀一个⻓长度为10的Buffer,填充1000console.log(Buffer.alloc(10,-1));//创建⼀一个⻓长度为10的Buffer,-1强制转换成255
Buffer.allocUnsafe(size):size 新 Buffer 的所需长度。
console.log(Buffer.allocUnsafe(10));//创建⼀一个⻓长度为10未初始化的buffer
Buffer.from(array):array 整数数组
console.log(Buffer.from([1,2,3]));//创建buffer,填充[1,2,3]
Buffer.from(string[, encoding]):string 要编码的字符串串。encoding string 的字符编码。默认值: ‘utf8’
console.log(Buffer.from(&39;)); //创建buffer,填充字符串串console.log(Buffer.from(&39;,&39;)); //创建buffer,填充bese64编码的字符串串
Buffer类上常用的属性、方法
Buffer.byteLength: 返回字符串串的字节长度
console.log(Buffer.byteLength(&39;));//返回字符串串的字节⻓长度,4console.log(Buffer.byteLength(&39;));//6,⼀一个⽂文字代表3个字节
Buffer.isBuffer(obj): 判断是否是buffer
console.log(Buffer.isBuffer({}));console.log(Buffer.isBuffer(Buffer.from(&39;)));
Buffer.concat(list[, totalLength]): 合并buffer
const buf = Buffer.from(&39;);const buf2 = Buffer.from(&39;);console.log(buf);console.log(buf2);console.log(Buffer.concat([buf,buf2]));console.log(Buffer.concat([buf,buf2],10));

buf.write(string[, offset[, length]][, encoding])将字符写⼊入buffer,返回已经写⼊入的字节数

string 要写入 buf 的字符串串。offset 从指定索引下写⼊入。默认值: 0 。length 要写⼊入的字节数。默认值: buf.length - offset 。encoding 字符串串的字符编码。默认值: ‘utf8’ 。
const buf = Buffer.allocUnsafe(20);console.log(buf);// console.log(buf.write(&39;));console.log(buf.write(&39;,5,3));console.log(buf);

buf.fill(value[, offset[, end]][, encoding]) 填充buffer

value | | | ⽤用来填充 buf 的值。offset 开始填充 buf 的索引。默认值: 0 。end 结束填充 buf 的索引(不不包含)。默认值: buf.length 。encoding 如果 value 是字符串串,则指定 value 的字符编码。默认值: ‘utf8’ 。
console.log(buf.fill(&39;,5,10));
buf.length buffer的⻓长度buf.toString([encoding[, start[, end]]]) 将buffer解码成字符串串形式encoding 使⽤用的字符编码。默认值: ‘utf8’ 。start 开始解码的字节索引。默认值: 0end 结束解码的字节索引(不不包含)。默认值: buf.length 。
const buf = Buffer.from(&39;);console.log(buf.toString(&39;,1,3));
buf.toJSON 返回 buffer 的 JSON 格式
const buf = Buffer.from(&39;);console.log(buf.toJSON());

buf.equals(otherBuffer) 对⽐比其它buffer是否具有完全相同的字节

otherBuffer 要对⽐比的buffer
const buf1 = Buffer.from(&39;);const buf2 = Buffer.from(&39;, &39;);const buf3 = Buffer.from(&39;);console.log(buf1);console.log(buf2);console.log(buf1.equals(buf2));// 打印: trueconsole.log(buf1.equals(buf3));
buf.indexOf/lastIndexOf 查找指定的值对应的索引buf.slice([start[, end]]) 切割bufferstart 新 Buffer 开始的位置。默认值: 0end 新 Buffer 结束的位置(不不包含)。默认值: buf.length 。
const buf = Buffer.from(&39;);console.log(buf.slice(2,7).toString());//cdefg

buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]]) 拷⻉贝buffer

target | 要拷⻉贝进的 Buffer 或 Uint8Array 。targetStart ⽬目标 buffer 中开始写⼊入之前要跳过的字节数。默认值: 0 。sourceStart 来源 buffer 中开始拷⻉贝的索引。默认值: 0 。sourceEnd 来源 buffer 中结束拷⻉贝的索引(不不包含)。默认值: buf.length 。
const buf = Buffer.from(&39;);const buf2 = Buffer.from(&39;);// console.log(buf.slice(2,7).toString());// console.log(buf.copy(buf2));// console.log(buf2.toString());console.log(buf2.copy(buf,2,1,3));console.log(buf.toString());

本文内容由小涵整理编辑!