buffer小解

Buffer代表一个缓冲区,存储二进制数据,是字节流

创建:

创建Buffer有4种方式:

1.new Buffer(size) 以字节为单位创建指定大小的Buffer

eg: var buf= new Buffer(10);

注: 此方法创建的缓冲区在未初始化时内部数据随机,什么数据都可能有

 

2.new Buffer(array) 使用字节数组来创建Buffer

eg: var buf1= new Buffer([1, 2, 3]);  var buf2= new Buffer([0x01, 0x45, 0x78]);

注: 字节数组可为二进制,十进制,16进制等,16进制以0x或0X开头,内容从0~255(一个字节最大255

 

3.new Buffer(str[,encoding]) 使用字符串,按照指定的编码方式创建,默认utf-8

eg: var buf3= new Buffer("aa", "utf-8");

注: 编码方式可为: ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex

 

4.new Buffer(buf) 按照buf实例创建一个buf,相当于复制

eg: var buf4= new Buffer(buf1);

--------------------------------------------------------------------------------------------------------------------------------------------------

写入:

buf.write(string[, offset][, length][, encoding])

按照指定的编码方式在指定位置写入指定长度

offset默认为0,encoding默认utf-8

----------------------------------------------------------------------------------------------------------------------------------------------------

读取:

1.下标读取:(类似于数组)

var buf= new Buffer(10); console.log(buf[1]);

 

2.buf.toString([encoding[, start[, end]]]);

按照指定方式在指定起始位置读取,并返回读取到的字符的长度

start默认0, end默认结束位置

eg: buf.toString('ascii', 1, 8);

 

3.buf.toJSON()

将Buffer对象转变为JSON格式,与JSON.stringify()类似

eg: 

var buf1 = new Buffer('1234');
console.log(buf1.toJSON());
console.log(JSON.stringify(buf1));

输出:

可以看出buf.toJSON() 与JSON.stringify()功能类似,只是一个有双引号,一个没有

---------------------------------------------------------------------------------------------------------------------------------------------------

切片, 拷贝, 拼接:

buf.slice([start[, end]])对缓存区本身进行切片处理

buf.copy(targetBuffer[, targetStart][, sourceStart][, sourceEnd])

targetStart, sourceStart默认为0,sourceEnd默认源缓冲区的结束位置,实际操作按目标缓冲区,源头缓冲区的大小来

concat(list[,totalLength]) list为缓冲区列表,totalLength为生成的新缓冲区的总长度

 --------------------------------------------------------------------------------------------------------------------------------------------------

对比:

buf.equals(otherBuffer) 判断两个缓冲区是否相等,相等时返回true

var buf1 = new Buffer('aaa1');
var buf2 = new Buffer('a1aa');

console.log(buf1.equals(buf2)); //false

可看出 equals需要两个缓冲区完全相等

buf.compare(otherBuffer) 判断两个缓冲区的大小,表示 buf 在 otherBuffer 之前,之后或相同,之前返回-1,之后返回1,相等返回0

-----------------------------------------------------------------------------------------------------------------------------------------------------

填充:

 

buf.fill(value[, offset][, end]) 使用指定的 value 来填充这个 buffer。如果没有指定 offset (默认是 0) 并且 没有end (默认是 buffer.length) ,将会填充整个buffer。

eg:

var buf = new Buffer('ABCD');
buf.fill(0);
console.log(buf);
console.log(buf.toString());

输出:

可见完全被填充,其中fill(0)实际运用中使用甚广,用于清除buffer内乱七八糟的数据,然后写入想写入的值,使用toString时便不会有以外的读取结果

 

转载于:https://www.cnblogs.com/yanze/p/6074748.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值