【Node.JS】buffer类缓冲区

简介: 【Node.JS】buffer类缓冲区

 简介

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);
//指定大小

image.gif

使用Buffer类

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

image.gif

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());

image.gif

image.gif编辑

七个汉字,一共占有了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);

image.gif

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

image.gif编辑

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

直接使用buffer类

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

image.gif

image.gif编辑

image.gif编辑


目录
相关文章
|
1天前
|
JavaScript 前端开发
js开发:请解释原型继承和类继承的区别。
JavaScript中的原型继承和类继承用于共享对象属性和方法。原型继承通过原型链实现共享,节省内存,但不支持私有属性。
19 0
|
1天前
|
缓存 JavaScript 前端开发
【Node系列】Buffer详解
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。 但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。 Node.js中的Buffer是一个全局对象,属于固有(built-in)类型的全局变量,不需要使用require函数导入。它允许直接操作原始内存,主要用于处理二进制数据流。Buffer实例对象的结构和整数数组很像,但Buffer的大小是固定的且在V8堆外分配物理内存。
25 2
|
1天前
|
JavaScript
js开发:请解释什么是ES6的类(class),并说明它与传统构造函数的区别。
ES6的类提供了一种更简洁的面向对象编程方式,对比传统的构造函数,具有更好的可读性和可维护性。类使用`class`定义,`constructor`定义构造方法,`extends`实现继承,并可直接定义静态方法。示例展示了如何创建`Person`类、`Student`子类以及它们的方法调用。
23 2
|
1天前
|
JavaScript 前端开发
js开发:请解释原型继承和类继承的区别。
JavaScript中的原型继承和类继承用于共享对象属性和方法。原型继承利用原型链查找属性,节省内存但不支持私有成员。类继承通过ES6的class和extends实现,支持私有成员但占用更多内存。两者各有优势,适用于不同场景。
22 0
|
1天前
uni-app 65egg.js聊天类chat.js封装(二)
uni-app 65egg.js聊天类chat.js封装(二)
29 1
|
1天前
|
Shell
Flume【问题记录 01】【at org.apache.flume.node.Application.main(Application.java:xxx) 类问题整理+其他类型问题总结】【避坑指南】
【2月更文挑战第17天】Flume【问题记录 01】【at org.apache.flume.node.Application.main(Application.java:xxx) 类问题整理+其他类型问题总结】【避坑指南】
79 2
|
1天前
|
JavaScript 网络协议 数据处理
Node.js中的Buffer与Stream:深入解析与使用
【4月更文挑战第30天】本文深入解析了Node.js中的Buffer和Stream。Buffer是处理原始数据的全局对象,适用于TCP流和文件I/O,其大小在V8堆外分配。创建Buffer可通过`alloc`和`from`方法,它提供了读写、切片和转换等操作。Stream是处理流式数据的抽象接口,分为可读、可写、双工和转换四种类型,常用于处理大量数据而无需一次性加载到内存。通过监听事件和调用方法,如读取文件的可读流示例,可以实现高效的数据处理。理解和掌握Buffer及Stream能提升Node.js应用的性能。
|
1天前
|
SQL JavaScript 前端开发
为Node.js加一个DB类
为Node.js加一个DB类
|
1天前
|
存储 JavaScript 前端开发
JavaScript的数据类型主要分为两大类:基本数据类型和引用数据类型
【4月更文挑战第20天】JavaScript的数据类型主要分为两大类:基本数据类型和引用数据类型
22 6
|
1天前
|
JavaScript
Node.js之Buffer(缓冲器)
Node.js之Buffer(缓冲器)