Buffer对象与字符串1.Buffer对象的toString()方法将Buffer对象中存储的数据转换为字符串toString([encoding],[start],[end])第一个参数用于指定Buffer对象中保存的文本编码格式。默认参数值为utf8。第二个和第三个参数用于指定转换数据的起始位置和结束位置。不包含结束位置varbuf=newBuffer('BUFFEROBJECT');console.log(buf);console.log(buf.toString());console.log(buf.toString('utf8',2,5));//结果<缓冲区425546464552204f424a454354>缓冲区对象2.Buffer对象的write()方法写入字符串buf.write(string,[offset],[length],[encoding])第一个参数指定要写入的字符串,第二个参数和第三个参数用于指定字符串转换为字节数据后的写入位置(包括起始值和结束值)第四个参数为编码格式,默认为utf8格式varchinese='一点奶茶好喝';varbuf=newBuffer(chinese);buf.write('two',0,3,'utf8');console.log(buf.toString());//两点的奶茶有点好吃在0到3这个范围内,其实对应的是中文字符串中的单词一。如果把3改成6,结果还是两点的奶茶有点好吃,因为请求的空间比写入的空间大,所以结果还是一样。如果把buf.write('2',0,3,'utf8')中的2改成22,也给了0到3的范围,结果还是2点奶茶有点delicious,但是如果取值范围是0到36.结果就是二二点奶茶有点好吃,如果把buf.write('two',0,3,'utf8')改成buf。write('二二点奶茶不是可口可乐',0,30,'utf8'),那么结果就是二二点奶茶不好吃,得到的buf长度为还是30,也就是说buf的write方法只是把原来buf的内容切掉了。如果新内容刚好可以放下,那么新内容就会替换旧内容。如果不能放的恰到好处,那就从新内容的起始位置算起,能放多少就放多少。说白了就是buf字节长度对应的内容的替换。3、StringDecoder对象使用StringDecoder对象将Buffer对象中的数据转换成字符串。该对象的作用与Buffer对象的toString方法相同,但对utf8编码格式的字符串提供了更好的支持。varStringDecoder=require('string_decoder').StringDecoder;vardecoder=newStringDecoder('utf8');varbuf=newBuffer('新垣结衣ガ主演の影片');console.log(decoder.write(buf));//result//AragakiYuiか主演の影4.Buffer对象与JSON对象的相互转换JSON.stringify(buf)将Buffer对象中存储的数据转换为字符串varbuf=newBuffer('一点点的奶茶好喝');console.log(buf);//varjsonBuffer=JSON.stringify(buf);console.log(jsonBuffer);{"type":"Buffer","data":[228,184,128,231,130,185,231,130,185,229,165,182,232,140,??182,230,156,137,231,130,185,229,132,191,229,165,189,229,150,157]}vardata=[228,184,128,231,130,185,231,130,185,229,165,182,232,140,??182,230,156,137,231,130,185,229,132,191,229,165,189,229,150,157];varnewData=[]data.forEach(function(elem){newData.push(elem.toString(16))})console.log(newData)//['e4','b8','80','e7','82','b9','e7','82','b9','e5','a5','b6','e8','8c','b6','e6','9c','89','e7','82','b9','e5','84','bf','e5','a5','bd','e5','96','9d']可以发现,JSON.stringify()之后的Buffer对象,得到的data属性object属性值,转换为十六进制后,就是Buffer对象的字节值。5.复制缓存数据的第一个参数buf.copy(targetBuffer,[targetStart],[sourceStart],[sourceEnd])用于指定复制的目标Buffer对象的第二个参数用于指定要复制的字节数开始在目标Buffer对象中写入数据。默认值为0。第三个参数用于指定复制源Buffer对象获取数据时的起始位置。默认值为0。第四个参数用于指定从复制源Buffer对象中获取数据时的结束位置。默认值是复制源Buffer对象的长度。publicへ');console.log(buf1);varbuf2=Buffer(256).fill(0);console.log(buf2);buf1.copy(buf2,10,12,30);console.log(buf2.toString());/****<缓冲区e696b0e59ea3e7b590e8a1a3e3818ce4b8bbe5bdb9e381aee698a0e794bbe3808ce3839fe38383e382afe382b9e3808de381...>*<缓冲区000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000...>*か主作のyinghua***/buf1有值,buf2要复制buf1的值,那么就是buf1.copy(buf2,<起始位置wherebuf2待粘贴>,,)6.Buffer类的类方法6.1isBuffer方法Buffer.isBuffer(buf)判断一个对象是否为Buffer对象,返回结果为true或false6.2byteLength方法Buffer.byteLength(string,[encoding])不同编码格式下,同一字符的字节长度不同varjapanese='AragakiYui';console.log(Buffer.byteLength(日语,'utf8'));//12console.log(Buffer.byteLength(japanese,'utf16le'));//8console.log(Buffer.byteLength(japanese,'base64'));//3console.log(Buffer.byteLength(japanese,'hex'));//2console.log(Buffer.byteLength(日语,'ascii'));//46.3。concat方法,将Buffer对象的值与字符串和数组的concat拼接方法使用相同的varbuf1=newBuffer('新垣结衣ガ主演の英华');varbuf2=newBuffer('「ミックス」');varbuf3=newBuffer('ガ中国で公开へ');console.log(Buffer.concat([buf1,buf2,buf3]).toString());//result//新垣结衣的电影《混音》将在中国上映6.4.isEncoding方法Buffer.isEncoding(encoding)检测字符串是否为有效的编码格式stringvarcode='utf8';console.日志(缓冲区。isEncoding(代码));