Buffer是什么
Javascript十分善于操作字符串,但是它并不善于操作二进制数据,在Javascript语言中也没有任何二进制相关的数据结构。
但是当Javascript扩展到后端领域以后,数据库操作、图像操作、文件上传这类后端很常见的操作,都无法再依赖字符这种类型来进行操作了,所以Node实现了一个叫做Buffer的 二进制缓冲区。它的单位是 字节,可以 随机设置和获取缓冲区的数据。
Buffer怎么用
创建一个缓冲区
根据一个字符串创建一个Buffer缓冲区很容易
语法: new Buffer(string[, encoding])
但是node最近也在快速发展中,这个API在v6中遭到了废弃,所以在v6之后的版本中,使用以下语法
Buffer.from(string[, encoding])
这里encoding默认值为utf-8,其他的可选值还有asciii、base64等。
1 | Buffer.from("que01.top"); |
创建一个指定空间的Buffer
语法: new Buffer(size)
同样的,这个语法在v6之后废弃了,新的API:语法: Buffer.alloc(size[, fill[, encoding]])
size:关于size的大小有以下规定
- size必须小于等于buffer.kMaxLength,在32位系统下它为(2^30)-1,64位系统下它为(2^31)-1
- 当size<=0,将会创建一个size=0的buffer
fill:预先填充的值,默认为0
encoding:编码
Buffer的其他方法
toString
我们可以将buffer还原为一个字符串
1 | > var buf = Buffer.from("my webSite:que01.top") |
toJSON
1 | > var buf2 = Buffer.from([1,2,3,4]) |
indexOf && lastIndexOf
1 | > var buf = Buffer.from("my webSite:que01.top") |
concat
语法: Buffer.concat(list[, totalLength])
1 | > let a = Buffer.from("我是:"), |
暂结
暂时就这样吧。Buffer目前来说因为个人还是偏向Web开发,暂时也没有太多应用。更多的时间有机会我再来补充。