5. 使用Buffer类处理二进制数据

2020-07-03  本文已影响0人  gem_Y

Buffer类(是全局类) 是专门存放二进制数据的缓冲区。

5.1 创建Buffer类

构造函数 1 ---- 只需将缓存区大小 指定为构造函数的参数

buf = new Buffer(size)

构造函数 2 ---- 使用一个数组来初始化缓冲区

new Buffer(array)
image.png

构造函数 3 ---- 使用一个字符串来初始化缓冲区

// encoding-----文字编码格式的字符串,默认为utf8,其他的还有 base64、ascii...
new Buffer(str, encoding)
image.png

5.2 字符串与缓冲区

字符串的长度:以文字作为单位
缓存区的长度:以字节作为单位


image.png
  1. 根据下标取出的数据
    缓存区 buf[2] 获取的是 缓冲区中第三个字节转换为整数后的值


    image.png
  2. 字符串对象一旦创建后不可被修改,而buffer对象可以通过序号来修改其中某个字节的数据


    image.png
  3. 虽然字符串对象拥有indexOf 、出指定位置的数据。而且Buffer对象的slice对象并不是复制缓存区中的数据,而是与该数据共享内存区域,因此如果修改slice方法取出的数据,则缓存区中保存的数据也将被修改。

image.png

5.3 Buffer对象与字符串对象之间的相互转换

5.3.1. Buffer对象的toString方法


image.png

5.3.2. Buffer对象的write方法
可以向已经创建的Buffer对象中写入字符串


image.png

5.3.3. StringDecoder对象
StringDecoder对象的write 方法,可以处理 当使用多个对象分割字符串时,则可以正确地将每个Buffer对象中的数据正确地转换为字符串。


image.png

5.4 Buffer对象与数值对象之间的相互转换

5.5 Buffer对象与JSON对象之间的相互转换

在Node.js中,可以使用JSON.stringfy方法将Buffer对象中保存的数据转换为一个字符串,也可以使用JSON.parse方法将一个经过转换后的字符串还原为一个数组。

image.png

5.6 复制缓存数据

copy方法
下面是将a 中的内容复制到b处


image.png

5.7 Buffer类的类方法

5.7.1 isBuffer: 用于判断一个对象是否为Buffer对象


image.png

5.7.2 byteLength 计算一个指定字符串的字节数


image.png

5.7.3 concat 方法
将几个Buffer对象结合创建为一个新的Buffer对象


image.png

5.7.4 isEncoding 用于检测一个字符串是否为一个有效的编码格式字符串


image.png
上一篇 下一篇

猜你喜欢

热点阅读