node.js buffer学习记录

为何需要buffer?

因为JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。而我们需要会读取和处理二进制数据。

如何创建一个buffer?

用new关键字,如下创建了一个字符串的buffer。 length属性用来查看buffer的长度

> var buf = new Buffer("www.runoob.com", "utf-8"); 
undefined
> buf.length
14

再比如创建一个数组的buf

> var buf = new Buffer([1,2,3])
undefined
> buf.length
3

还可以这样
如下,先创建一个buffer,123的意思是buffer的长度是123.之后再向上述buf写入内容,然后返回值是buf的长度。就是apple的字符数。

> buf=new Buffer(123)
<Buffer 01 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 a4 00 04 01 00 00 00 0a 00 00 00 00 00 00 00 78 a4 00 04 01 00 00 00 05 00 00 00 01 00 00 00 00 00 ... >
> buf.write('apple')
5

如何读取buffer数据?

如下,利用toString函数,参数是解码方式,以及起始和结束值。

> buf=new Buffer(26)
<Buffer 01 20 00 00 00 00 00 00 00 00 00 00 00 00 00 00 01 42 80 03 01 00 00 00 0a 00>
> for (var i=0;i<26;i++){
... buf[i]=i+97;}
122
> console.log(buf.toString('ascii',0,5));
abcde

合并buffer

利用Buffer.concat,参数是一个数组。

> buf1=new Buffer('you love me')
<Buffer 79 6f 75 20 6c 6f 76 65 20 6d 65>
> buf2=new Buffer('you hate me')
<Buffer 79 6f 75 20 68 61 74 65 20 6d 65>
> var buffer3=Buffer.concat(buf1,buf2)
> console.log(buffer3.toString('ascii'))
you love meyou hate me
undefined

剪裁缓冲区

利用slice。

> var buffer1 = new Buffer('runoob');
> var buffer2 = buffer1.slice(0,2);
> console.log(buffer2.toString())
ru

总结

没啥意思

参考

Node.js Buffer(缓冲区) | 菜鸟教程

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容