‘binary’ – ‘latin1’ 的别名。
‘hex’ – 将每个字节编码为两个十六进制字符。
Buffer.from(string[, encoding])
在新版本中,由Buffer.from(string[, encoding]方法替代
var buf1 = Buffer.from('this is a tést');
console.log(buf1.toString());//this is a tést
console.log(buf1.toString('ascii'));//this is a tC)st
var buf2 = Buffer.from('7468697320697320612074c3a97374', 'hex');
console.log(buf2.toString());//this is a tést4、new Buffer(arrayBuffer[, byteOffset [, length]])。参数arrayBuffer <ArrayBuffer> 一个 ArrayBuffer,或一个 TypedArray 的 .buffer 属性;byteOffset <Integer> 开始拷贝的索引。默认为 0;length <Integer> 拷贝的字节数。默认为 arrayBuffer.length – byteOffset
var arr = new Uint16Array(2);
arr[0] = 5000;
arr[1] = 4000;
var buf = new Buffer(arr.buffer);
console.log(buf);//<Buffer 88 13 a0 0f>
arr[1] = 6000;
console.log(buf);//<Buffer 88 13 70 17>Buffer.from(arrayBuffer[, byteOffset [, length]])
在新版本中,由Buffer.from(arrayBuffer[, byteOffset [, length]])方法替代
var arr = new Uint16Array(2);
arr[0] = 5000;
arr[1] = 4000;
var buf = Buffer.from(arr.buffer);
console.log(buf);//<Buffer 88 13 a0 0f>
arr[1] = 6000;
console.log(buf);//<Buffer 88 13 70 17>
Buffer对象类似于数组,它的元素为16进制的两位数,即0到255的数值
console.log(Buffer.from('test'));//<Buffer 74 65 73 74>长度
不同编码的字符串占用的元素个数各不相同,中文字在UTF-8编码下占用3个元素,字母和半角标点符号占用1个元素
var buf = Buffer.from('match');console.log(buf.length);//5
var buf = Buffer.from('火柴');
console.log(buf.length);//6
下标
Buffer受Array类型的影响很大,可以访问length属性得到长度,也可以通过下标访问元素
var buf = Buffer.alloc(10); console.log(buf.length); // => 10
上述代码分配了一个长10字节的Buffer对象。我们可以通过下标对它进行赋值
buf[0] = 100;console.log(buf[0]); // => 100
要注意的是,给元素的赋值如果小于0,就将该值逐次加256,直到得到一个0到255之间的整数。如果得到的数值大于255,就逐次减256,直到得到0~255区间内的数值。如果是小数,舍弃小数部分,只保留整数部分
buf[0] = -100;









