//一个 Buffer 是一段内存,比如大小为 2(Byte)的buffer,一共有 16 bit ,比如是 00000001 00100011 ,可是这样显示太不方便。所以显示这段内存的数据的时候,用其对应的 16 进制就比较方便了,是 01 23,之所以用 16 进制是因为转换比较方便。
const buf = Buffer.alloc(3);
buf[0] = 22;
//超过255把高位去掉
console.log(buf);
//结果<Buffer 16 00 00>
const buf1 = Buffer.alloc(3,'a','base64');
console.log(buf1);
//结果<Buffer 98 6b da>
const buf2 = Buffer.alloc(9,'你是猪','utf8');//utf8默认编码
console.log(buf2);
//结果<Buffer e4 bd a0 e6 98 af e7 8c aa> 一个中文字占三个字节
const buf3 = Buffer.allocUnsafe(3,'a');
//结果为随机的三位,可能有敏感数据,可以调用buf3.fill
buf3.fill(4);
console.log(buf3);
//结果<Buffer 04 04 04>
var bufC = Buffer.concat([buf,buf2]);
console.log(bufC);
//<Buffer 00 00 00 e4 bd a0 e6 98 af e7 8c aa>
var bufC1 = Buffer.concat([buf,buf2],5);
console.log(bufC1);
//<Buffer 00 00 00 e4 bd>
var bufArr = Buffer.from([0xe4,0xbd,0xa0, 0xe6 ,0x98, 0xaf ,0xe7 ,0x8c,0xaa]);
console.log(bufArr); //<Buffer e4 bd a0 e6 98 af e7 8c aa>
console.log(bufArr.toString()); //你是猪
var bufArr1 = Buffer.from('123');
console.log(bufArr1); //<Buffer 31 32 33>
var bufArr2 = Buffer.from([1,2,'2']);
console.log(bufArr2); //<Buffer 01 02 02>
//拷贝buffer
const bufx1 = Buffer.from('buffer');
const bufx2 = Buffer.from(bufx1);
bufx1[0] = 0x61;
console.log(bufx1.toString());
// 输出: auffer
console.log(bufx2.toString());
// 输出: buffer
//拷贝buffer
const bufxy1 = Buffer.from('buffer','ascii');
console.log(bufxy1.toString('utf8')); //buffer
//判断是否为Buffer
console.log(Buffer.isBuffer(bufxy1)); //true
//表示node是否支持这种字符编码
console.log(Buffer.isEncoding('utf8')); //true
console.log('peng'.charCodeAt(2)); //110
console.log('peng'.charAt(2)); //n
//创建16个字节大小的Buffer
var arrbuf = new ArrayBuffer(16);
console.log(arrbuf);
console.log(Buffer.from(arrbuf)); //<Buffer 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00>
console.log(Buffer.from(arrbuf).buffer.byteLength); //内存大小
//copy指定buff的长度
var allocbuf = Buffer.alloc(26);
var allocbuf1 = Buffer.alloc(26,'!');
console.log(allocbuf.buffer); //内存26个字节,alloc方法可以直接写内存大小 from不可以.
for(var i=0;i<26;i++){
allocbuf[i] = i+65;
}
console.log(allocbuf.toString()); //ABCDEFGHIJKLMNOPQRSTUVWXYZ
allocbuf.copy(allocbuf1,3,6,13); //从allocbuf复制到allocbuf1中,从allocbuf1中的3位置开始,把allocbuf中6到13位置的东西复制到allocbuf1中
console.log(allocbuf1.toString()); //!!!GHIJKLM!!!!!!!!!!!!!!!!
//一个Buffer.from直接分配8192个字节的内存