Node.js Buffer学习笔记

了解Buffer

在Node.js中,Buffer是一个用于处理二进制数据的类。它不仅可以用于处理网络流、文件系统操作等场景,还可以用于处理图片、视频等媒体数据。

Buffer对象类似于整个数组,但它被设计为用于存储原始二进制数据。 Buffer的大小是固定的,不能调整大小。

在Node.js v6.0之后,Buffer.alloc()函数被引入,用于直接创建已初始化为零的Buffer实例。这提高了应用程序的性能和安全性。

创建Buffer

可以使用多种方式来创建Buffer:

方法一:通过字符串创建Buffer

Copy Code
const str = 'Hello, world!'; const buf1 = Buffer.from(str, 'utf8'); console.log(buf1);

输出结果:

Copy Code
<Buffer 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21>

方法二:通过数组创建Buffer

Copy Code
const arr = [0x48, 0x65, 0x6c, 0x6c, 0x6f, 0x2c, 0x20, 0x77, 0x6f, 0x72, 0x6c, 0x64, 0x21]; const buf2 = Buffer.from(arr); console.log(buf2);

输出结果:

Copy Code
<Buffer 48 65 6c 6c 6f 2c 20 77 6f 72 6c 64 21>

方法三:通过缓冲区创建Buffer

Copy Code
const buf3 = Buffer.alloc(5); console.log(buf3);

输出结果:

Copy Code
<Buffer 00 00 00 00 00>

读写Buffer

可以使用多种方式来读取和写入Buffer:

读取Buffer

Copy Code
const buf4 = Buffer.from('Hello, world!'); console.log(buf4.toString());

输出结果:

Copy Code
Hello, world!

写入Buffer

Copy Code
const buf5 = Buffer.alloc(10); buf5.write('hello'); console.log(buf5);

输出结果:

Copy Code
<Buffer 68 65 6c 6c 6f 00 00 00 00 00>

比较Buffer

可以使用buffer.compare()方法来比较两个Buffer对象。

Copy Code
const buf6 = Buffer.from('ABC'); const buf7 = Buffer.from('BCD'); console.log(buf6.compare(buf7)); // -1 console.log(buf7.compare(buf6)); // 1 console.log(buf6.compare(buf6)); // 0

输出结果:

Copy Code
-1 1 0

以上是Node.js Buffer学习笔记的内容,希望对你有所帮助。