/* * Buffer类 * 一个用于更好的操作二进制数据的类 * 我们在操作文件或者网络数据的时候,其实操作的就是二进制数据流,Node为我们提供了一个更方便的去操作这种数据的类Buffer,他是一个全局的类 * new Buffer(size); * size [Number] 创建一个Buffer对象,并为这个对象分配一个大小 * 当我们为一个Buffer对象分配空间大小以后,其长度是固定的,不能更改 例如:var bf=new Buffer(5); * new Buffer(array); * new Buffer(string,[encoding]); * * buf.length: buffer的字节(bytes)大小 * buf[index]:获取或者设置在指定index索引位置的8位字节内容 * buf.write(string,[offset],[lengeh],[encoding]):根据参数offset偏移量和指定的encoding编码方式,将参数string数据写入buffer buf.write(要写入的字符串,从Buffer对象中的第几位开始写入,写入字符串的长度,写入的字符串的编码) * buf.toString([encoding],[start],[end]):根据encoding参数(默认是‘UTF-8’)返回一个解码的string类型 * buf.toJSON():返回一个JSON表示的Buffer实例。JSON.stringify将会默认调用来字符串序列化这个Buffer实例 * buf.slice([start],[end]):返回一个新的buffer,这个buffer将会和老的buffer引用相同的内存地址, * 注意:修改这个新的buffer实例slice切片,也会改变原来的buffer * buf.copy(targetBuffer,[targetStart],[sourceStart],[sourceEnd]):进行buffer的拷贝 * */
/**
* Created by su on 2019/2/18.
*/
/*
* Buffer类
* 一个用于更好的操作二进制数据的类
* 我们在操作文件或者网络数据的时候,其实操作的就是二进制数据流,Node为我们提供了一个更方便的去操作这种数据的类Buffer,他是一个全局的类
* new Buffer(size);
* size [Number] 创建一个Buffer对象,并为这个对象分配一个大小
* 当我们为一个Buffer对象分配空间大小以后,其长度是固定的,不能更改 例如:var bf=new Buffer(5);
* new Buffer(array);
* new Buffer(string,[encoding]);
*
* buf.length: buffer的字节(bytes)大小
* buf[index]:获取或者设置在指定index索引位置的8位字节内容
* buf.write(string,[offset],[lengeh],[encoding]):根据参数offset偏移量和指定的encoding编码方式,将参数string数据写入buffer buf.write(要写入的字符串,从Buffer对象中的第几位开始写入,写入字符串的长度,写入的字符串的编码)
* buf.toString([encoding],[start],[end]):根据encoding参数(默认是‘UTF-8’)返回一个解码的string类型
* buf.toJSON():返回一个JSON表示的Buffer实例。JSON.stringify将会默认调用来字符串序列化这个Buffer实例
* buf.slice([start],[end]):返回一个新的buffer,这个buffer将会和老的buffer引用相同的内存地址,
* 注意:修改这个新的buffer实例slice切片,也会改变原来的buffer
* buf.copy(targetBuffer,[targetStart],[sourceStart],[sourceEnd]):进行buffer的拷贝
* */
//new Buffer(size);
console.log("==========new Buffer(size);========");
var bf=new Buffer(5);
console.log(bf);
bf[1]=10;
console.log(bf);
//new Buffer(array)
console.log("==========new Buffer(array)========");
var bf=new Buffer([1,2,3]);
console.log(bf);
bf[5]=10;
console.log(bf);
//new Buffer(string,[encoding]);
console.log("===========new Buffer(string,[encoding]);===");
var bf=new Buffer("miaov","utf-8");
console.log(bf);
for(var i=0;i<bf.length;i++){
//console.log(bf[i].toString(16)); 转成16进制格式
console.log(String.fromCharCode(bf[i])); //转成字符串格式
}
console.log("======buf.write(string,[offset],[lengeh],[encoding])========");
var str="miaov";
console.log(new Buffer(str));
//var bf=new Buffer(3);//截取前三个
bf.write(str);
console.log(bf);
console.log("======buf.write(string,[offset])========");
bf.write(str,1);
console.log(bf);
console.log("======buf.write(string,[offset],[lengeh])========");
bf.write(str,1,3);
console.log(bf);
//buf.toString()例子:
console.log("======buf.toString()=======");
var bf =new Buffer("miaov");
console.log(bf.toString());
console.log(bf.toString("utf-8",1));
console.log(bf.toString("utf-8",1,4));
//buf.toJSON()
console.log("=====buf.toJSON()=======");
console.log(bf.toJSON());
//buf.slice([start],[end])
console.log("====buf.slice([start],[end])====")
var bf =new Buffer("miaov");
console.log(bf);
var bf2=bf.slice();
console.log(bf2);
var bf3=bf.slice(1,3);
console.log(bf3);
//buf.copy()
console.log("======buf.copy()=====");
var bf4=new Buffer(10);
bf.copy(bf4);
console.log(bf4);
console.log("======buf.copy(bf4,1)=====");
bf.copy(bf4,1);
console.log(bf4);