关于 Node.js 之 Buffer(下)

简介: JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。

10.png


缓冲区合并


语法


Node 缓冲区合并的语法如下所示:


Buffer.concat(list[, totalLength])


参数


参数描述如下:


  • list - 用于合并的 Buffer 对象数组列表。
  • totalLength - 指定合并后 Buffer 对象的总长度。


返回值


返回一个多个成员合并的新 Buffer 对象。


实例


var buffer1 = new Buffer('编程三昧 ');
var buffer2 = new Buffer('bi');
var buffer2 = new Buffer('bianchengsanmei');
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 内容: " + buffer3.toString());


执行以上代码,输出结果为:


buffer3 内容: 编程三昧 bianchengsanmei


缓冲区比较


语法


Node Buffer 比较的函数语法如下所示, 该方法在 Node.js v0.12.2 版本引入:


buf.compare(otherBuffer);


参数


参数描述如下:


  • otherBuffer - 与 buf 对象比较的另外一个 Buffer 对象。


返回值


返回一个数字,表示 bufotherBuffer 之前,之后或相同。


实例


var buffer1 = new Buffer('ABC');
var buffer2 = new Buffer('ABCD');
var result = buffer1.compare(buffer2);
if(result < 0) {
   console.log(buffer1 + " 在 " + buffer2 + "之前");
}else if(result == 0){
   console.log(buffer1 + " 与 " + buffer2 + "相同");
}else {
   console.log(buffer1 + " 在 " + buffer2 + "之后");
}


执行以上代码,输出结果为:


ABC在ABCD之前


拷贝缓冲区


语法


Node 缓冲区拷贝语法如下所示:


buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])


参数


参数描述如下:


  • targetBuffer - 要拷贝的 Buffer 对象。
  • targetStart - 数字, 可选, 默认: 0
  • sourceStart - 数字, 可选, 默认: 0
  • sourceEnd - 数字, 可选, 默认: buffer.length


返回值


没有返回值。


实例


var buffer1 = new Buffer('ABC');
// 拷贝一个缓冲区
var buffer2 = new Buffer(3);
buffer1.copy(buffer2);
console.log("buffer2 content: " + buffer2.toString());


执行以上代码,输出结果为:


buffer2 content: ABC


缓冲区裁剪


Node 缓冲区裁剪语法如下所示:


buf.slice([start[, end]])


参数


参数描述如下:


  • start - 数字, 可选, 默认: 0
  • end - 数字, 可选, 默认: buffer.length


返回值


返回一个新的缓冲区,它和旧缓冲区指向同一块内存,但是从索引 start 到 end 的位置剪切。


实例


var buffer1 = new Buffer('youj');
// 剪切缓冲区
var buffer2 = buffer1.slice(0,2);
console.log("buffer2 content: " + buffer2.toString());


执行以上代码,输出结果为:


buffer2 content: yo


缓冲区长度


语法 Node 缓冲区长度计算语法如下所示:


buf.length;

返回值


返回 Buffer 对象所占据的内存长度。


实例


var buffer = new Buffer('bianchengsanmei');
//  缓冲区长度
console.log("buffer length: " + buffer.length);


执行以上代码,输出结果为:


buffer length: 15


~本文完,感谢阅读!


学习有趣的知识,结识有趣的朋友,塑造有趣的灵魂!


你来,怀揣期望,我有墨香相迎! 你归,无论得失,唯以余韵相赠!


知识与技能并重,内力和外功兼修,理论和实践两手都要抓、两手都要硬!



相关文章
|
2月前
|
缓存 JavaScript 前端开发
【Node系列】Buffer详解
JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。 但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。 Node.js中的Buffer是一个全局对象,属于固有(built-in)类型的全局变量,不需要使用require函数导入。它允许直接操作原始内存,主要用于处理二进制数据流。Buffer实例对象的结构和整数数组很像,但Buffer的大小是固定的且在V8堆外分配物理内存。
39 2
|
2月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
99 0
|
2月前
|
JavaScript 前端开发 API
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)(下)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
49 0
|
2月前
|
消息中间件 Web App开发 JavaScript
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)(上)
Node.js【简介、安装、运行 Node.js 脚本、事件循环、ES6 作业队列、Buffer(缓冲区)、Stream(流)】(一)-全面详解(学习总结---从入门到深化)
101 0
|
1月前
|
存储 JSON JavaScript
Node.js Buffer(缓冲区)
Node.js Buffer(缓冲区)
16 1
|
2月前
|
JavaScript 网络协议 数据处理
Node.js中的Buffer与Stream:深入解析与使用
【4月更文挑战第30天】本文深入解析了Node.js中的Buffer和Stream。Buffer是处理原始数据的全局对象,适用于TCP流和文件I/O,其大小在V8堆外分配。创建Buffer可通过`alloc`和`from`方法,它提供了读写、切片和转换等操作。Stream是处理流式数据的抽象接口,分为可读、可写、双工和转换四种类型,常用于处理大量数据而无需一次性加载到内存。通过监听事件和调用方法,如读取文件的可读流示例,可以实现高效的数据处理。理解和掌握Buffer及Stream能提升Node.js应用的性能。
|
2月前
|
JavaScript
Node.js之Buffer(缓冲器)
Node.js之Buffer(缓冲器)
|
11月前
|
存储 JavaScript 前端开发
Node.js 的 Buffer 是什么?探索其用途与功能
在 Node.js 中,Buffer 是一种用于处理二进制数据的机制。它允许你在不经过 JavaScript 垃圾回收机制的情况下直接操作原始内存,从而更高效地处理数据,特别是在处理网络流、文件系统操作和其他与 I/O 相关的任务时。Buffer 是一个全局对象,不需要额外的模块导入就可以使用。
|
2月前
|
存储 JavaScript 计算机视觉
什么是Node.js Buffer(缓冲区)?
什么是Node.js Buffer(缓冲区)?
55 1
|
9月前
|
存储 JavaScript API
2023Node.js零基础教程(小白友好型),nodejs新手到高手,(二)NodeJS入门——buffer模块、计算机基础、fs模块、path模块
2023Node.js零基础教程(小白友好型),nodejs新手到高手,(二)NodeJS入门——buffer模块、计算机基础、fs模块、path模块
82 0