写点什么

【Node.JS】buffer 类缓冲区

  • 2022-11-22
    河北
  • 本文字数:850 字

    阅读完需:约 3 分钟

 简介

node.js 的开发语言就是 js,

javascript 语言自身只有字符串数据类型,没有二进制数据类型。

node.js 有时会操作一些文件,或是 tcp 流之类的东西。

那么就必须要操作二进制数据,

因此,在 node.js 中,有一个 buffer 类,

他用来创建一个专门存放二进制数据的缓存区。

buffer 类是随 node.js 安装的,直接引入就可以使用。

这些原始数据是存储在 buffer 类的实例中,一个 buffer 类就相当于是一个整数数组,他相当于是划出了一块自己的内存空间。

buffer 类的实例,用于表示编码字符的序列,支持 utf-8,ascii 等

创建 Buffer 类

Buffer.alloc,返回一个指定大小的 Buffer 实例,如果没有设置 fill,则默认填满 0。

const buf1 = Buffer.alloc(100);//指定大小
复制代码


点击并拖拽以移动

使用 Buffer 类

buf.write(string[, offset[, length]][, encoding])
复制代码


点击并拖拽以移动

string - 写入缓冲区的字符串。

offset - 缓冲区开始写入的索引值,默认为 0 。

length - 写入的字节数,默认为 buffer.length

encoding - 使用的编码。默认为 'utf8' 。

const buf1 = Buffer.alloc(100);var xx = buf1.write('坚毅的小解同志'); //返回的是字节数console.log(buf1);  //显示二进制字节占用情况console.log('字节数' + xx);console.log(buf1.toString());
复制代码


点击并拖拽以移动



点击并拖拽以移动

​编辑

七个汉字,一共占有了 21 个字节,一个汉字占三个自己,在 unicode 编码格式中一个汉字占两个字节,在默认的 utf-8 中一个汉字占三个字节。我们可以通过 toString 这个方法来将二进制转化为字符串。

buffer 类在实际应用中不多,当所修改的内容较为庞大的时候,我们可以采取这种二进制数组来修改内容,不会像 replace 产生新的数组。

例 

const buf1 = Buffer.alloc(100);var xx = buf1.write('aello,World'); //返回的是字节数buf1[0] = 72;console.log(buf1);  //显示二进制字节占用情况console.log('字节数' + xx);
复制代码


点击并拖拽以移动

通过二进制 ASCII 码来替换首字母。



点击并拖拽以移动

​编辑

 中间的逗号是中文的逗号 所以一共 13 个字节。

直接使用 buffer 类

var xx = Buffer.from('aellow,World'); xx[0] = 72;console.log(xx);  //显示二进制字节占用情况console.log(xx.toString());
复制代码


点击并拖拽以移动



点击并拖拽以移动

​编辑

用户头像

还未添加个人签名 2022-10-14 加入

还未添加个人简介

评论

发布
暂无评论
【Node.JS】buffer类缓冲区_node.js_坚毅的小解同志_InfoQ写作社区