前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Node.js Buffer(缓冲区)(下)

Node.js Buffer(缓冲区)(下)

原创
作者头像
陈不成i
修改2021-07-09 14:32:05
7510
修改2021-07-09 14:32:05
举报
文章被收录于专栏:ops技术分享

将 Buffer 转换为 JSON 对象

语法

将 Node Buffer 转换为 JSON 对象的函数语法格式如下:

代码语言:javascript
复制
buf.toJSON()

当字符串化一个 Buffer 实例时,JSON.stringify() 会隐式地调用该 toJSON()

返回值

返回 JSON 对象。

实例

代码语言:javascript
复制
const buf = Buffer.from([0x1, 0x2, 0x3, 0x4, 0x5]);
const json = JSON.stringify(buf);

// 输出: {"type":"Buffer","data":[1,2,3,4,5]}
console.log(json);

const copy = JSON.parse(json, (key, value) => {
  return value && value.type === 'Buffer' ?
    Buffer.from(value.data) :
    value;
});

// 输出: <Buffer 01 02 03 04 05>
console.log(copy);

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

代码语言:javascript
复制
{"type":"Buffer","data":[1,2,3,4,5]}
<Buffer 01 02 03 04 05>

缓冲区合并

语法

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

代码语言:javascript
复制
Buffer.concat(list[, totalLength])

参数

参数描述如下:

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

返回值

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

实例

代码语言:javascript
复制
var buffer1 = Buffer.from(('菜鸟教程'));
var buffer2 = Buffer.from(('www.runoob.com'));
var buffer3 = Buffer.concat([buffer1,buffer2]);
console.log("buffer3 内容: " + buffer3.toString());

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

代码语言:javascript
复制
buffer3 内容: 菜鸟教程www.runoob.com

缓冲区比较

语法

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

代码语言:javascript
复制
buf.compare(otherBuffer);

参数

参数描述如下:

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

返回值

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

实例

代码语言:javascript
复制
var buffer1 = Buffer.from('ABC');
var buffer2 = Buffer.from('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 + "之后");
}

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

代码语言:javascript
复制
ABC在ABCD之前

拷贝缓冲区

语法

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

代码语言:javascript
复制
buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]])

参数

参数描述如下:

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

返回值

没有返回值。

实例

代码语言:javascript
复制
var buf1 = Buffer.from('abcdefghijkl');
var buf2 = Buffer.from('RUNOOB');

//将 buf2 插入到 buf1 指定位置上
buf2.copy(buf1, 2);

console.log(buf1.toString());

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

代码语言:javascript
复制
abRUNOOBijkl

缓冲区裁剪

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

代码语言:javascript
复制
buf.slice([start[, end]])

参数

参数描述如下:

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

返回值

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

实例

代码语言:javascript
复制
var buffer1 = Buffer.from('runoob');
// 剪切缓冲区
var buffer2 = buffer1.slice(0,2);
console.log("buffer2 content: " + buffer2.toString());

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

代码语言:javascript
复制
buffer2 content: ru

缓冲区长度

语法

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

代码语言:javascript
复制
buf.length;

返回值

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

实例

代码语言:javascript
复制
var buffer = Buffer.from('www.runoob.com');
//  缓冲区长度
console.log("buffer length: " + buffer.length);

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

代码语言:javascript
复制
buffer length: 14

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 将 Buffer 转换为 JSON 对象
    • 语法
      • 返回值
        • 实例
        • 缓冲区合并
          • 语法
            • 参数
              • 返回值
                • 实例
                • 缓冲区比较
                  • 语法
                    • 参数
                      • 返回值
                        • 实例
                        • 拷贝缓冲区
                          • 语法
                            • 参数
                              • 返回值
                                • 实例
                                • 缓冲区裁剪
                                  • 参数
                                    • 返回值
                                      • 实例
                                      • 缓冲区长度
                                        • 语法
                                          • 返回值
                                            • 实例
                                            领券
                                            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档