Buffers数据类型

介绍

Buffer对象是Node处理二进制数据(eg:TCP数据流)的一个接口。
Buffer对象是一个构造函数,生成的实例代表了V8引擎分配的一段内存,是一个类似数组的对象,
成员都为0到255的整数值,即一个8位的字节。
Buffer类的实例(即对象)类似于整数数组,实例对应于固定大小的原始内存分配,
其大小在创建时被确定且无法更改。

创建Buffer

1、利用字符串创建buffer:Buffer.from
const { Buffer } = require('node:buffer');
var str = "Hello world"
// 将一个字符串保存到buffer中,并返回
var buf = Buffer.from(str)
console.log(buf)
// 结果: <Buffer 48 65 6c 6c 6f 20 77 6f 72 6c 64>

2、Buffer.alloc()
.alloc() 方法在您想要创建空缓冲区时很有用,不需要初始化数据填充。默认情况下,
它接受一个数字并返回一个给定大小并且填充了 0 的缓冲区。第二个参数:用于预填充新 Buffer 的值
const { Buffer } = require('node:buffer');
const buff = Buffer.alloc(1, 'abcd');
console.log(buff.toString('utf-8')); 
// 结果: a

写入Buffer

const { Buffer } = require('node:buffer');
const buff = Buffer.alloc(9);
buff.write("hey there"); // 返回 9(写入的字节数)
console.log(buff.toString());
//结果: hey there
// 如果写入的字节数超过缓冲区支持的字节数,
// 您的数据将被截断以适合缓冲区。
buff.write("hey christopher"); // 返回 9(写入的字节数)
console.log(buff.toString());
// 结果: 'hey chris'

buf.toJSON() 转换为 JSON 对象

const { Buffer } = require('node:buffer');
var buf3 = Buffer.from('test');
var json = JSON.stringify(buf3);
console.log(json);
//  结果: {"type":"Buffer","data":[116,101,115,116]}

Buffer.concat()合并,将所有 Buffer 实例连接在一起的结果

const { Buffer } = require('node:buffer');
var i1 =  Buffer.from('Hello');
var i2 =  Buffer.from(' ');
var i3 =  Buffer.from('World');
console.log(Buffer.concat([i1, i2, i3], 10).toString());
//结果: Hello Worl
powered by GitbookEdit Time: 2023-04-08 10:28:32