向国际劳动妇女节致敬, 注意是劳动妇女, 不劳动的二代, 女神, 公主滚粗……

buffer一共用的函数起始并不多. 官方文档语焉不详. 而且字母序, 真的痛苦.这里按照工作序写一下:

起始1, alloc配合fill

//声明一个的128字节的buffer				
const savedata=Buffer.allocUnsafe(128)
//直接用整数0填充
savedate.fill(0)

起始2, 更通常的做法是用一个buffer生成另一个, 初始的buffer由这种stream函数得到

//使用Buffer.from(buffer) 可以避免很多无需转化的内容.....
//而且不必计算尾部截止位置了.
//部分填充: Buffer.from(object[, offsetOrEncoding[, length]])
const savedata=Buffer.from(tailchunk)

工作中要用的就是slice了, 切片, 注意切片和主体是共享内存的.

//buf.slice([start[, end]])
//start end, 都是从0记数, 起点都包含在切片里面, 终点不包含(之前理解错了)
//下面这句话从第四个字符开始, 一共切了30个字符.
let ss=tailchunk.slice(3,33) 
//此时切片完成, 由于共享内存, 所以对ss的操作都会同时影响tailchunk的值.

填充, 这个是最后一步了

//buf.write(string[, offset[, length]][, encoding])
//offset默认是0, 起始位置....
savedata.write("色哦恩恩",3,30)
//上面这句意思是从第四个位置填充最多30个字节
//如果buffer填充: 
Buffer.from(object[, offsetOrEncoding[, length]])
//如果用一个buffer填充另一个: 
source.copy(target, targetStart, sourceStart, sourceEnd);
//这里要注意的是: sourceend是不包含的.
//targetstrat 默认0
//sourcestart 默认0
//sourceend 默认source.length

制造

const buf = Buffer.from('hello world', 'ascii')//这个可以从字符串制造buffer
let t= Buffer.from(o)	//复制一份buffer, t和o并不共用内存
let allframe= Buffer.allocUnsafe(0)//一个空的buffer

合并

Buffer.concat() //这个可以合并多个buffer
tallheadframe=Buffer.concat([tallheadframe, tframehead, tframebody],tlastlengthsum) //多个buffer都放到数组里面, 最后一个参数是可选的, 表示合并之后的buffer长度, 推荐写进去, 能大大提升效率.