什么是Buffer数据类型
【第2章 Node.js基础】2.6 Node.js 的Buffer数据类型_buffer切片-CSDN博客
Buffer 是 Node.js 中用于处理二进制数据的数据类型,可以将其视为一种缓冲区或缓冲器。它类似于整数数组,但是在创建时分配了固定大小的原始内存,并且大小无法更改。
Buffer 的特点
Buffer 的特点包括:
- 固定大小:Buffer 实例在创建时需要指定大小,且无法更改。这使得 Buffer 在处理二进制数据时更加高效。
- 原始内存分配:Buffer 实例在内存中分配了原始的二进制数据存储空间,可以直接对其进行读取和写入操作。
- 全局作用域:Buffer 类位于全局作用域中,因此无需使用 require() 加载即可直接使用。
通过使用 Buffer,Node.js 可以处理 TCP 流、文件系统操作以及其他需要与二进制字节流进行交互的场景。Buffer 提供了一系列方法和属性,用于读取、写入和操作二进制数据,使得在 Node.js 中处理二进制数据变得更加方便和高效。
Buffer用于编码转换
这里先介绍一下字符集(Charset)和字符编码(Encoding)这两个概念。文字内容在计算机中的存储格式实际是二进制的字节流,这两者之间的转换需要一个统一的标准,就是各种字符集标准,其规定了每个字符与二进制数字存储方式(编码》的转换关系。字符集只是一个规则集合的名称,而字符集要正确编码转码一个字符还需要字库表、编码字符集和字符编码的支持。
字库表决定整个字符集能够表示的字符的范围。
编码字符集则用一个编码值来表示一个字符在字库中的位置。
字符编码确定编码字符集和实际存储数值之间的转换关系。
例如,Unicode 是编码字符集,而UTF-8、UTF-16 就是字符编码,即符合 Unicode 规则的字库的一种实现形式。
Buffer 实例一般用于表示编码字符的序列,如UTF-8、UCS2、Base64 或十六进制编码的数据在文件操作和网络操作中,如果没有显式声明编码格式,返回数据的默认类型为 Buffer。例如,读取文件时不指定编码格式,得到的结果就是 Buffer 字符串。通过使用显式的字符编码,就可以将 Buffer 实例与普通的JavaScript 字符串进行相互转换。
Node.is 目前支持的字符编码如下。
- ascii: 仅适用于7位ASCI 数据。此编码速度很快,如果设置这种编码,将从数据中删除高位。
- utf8:多字节编码的 Unicode 字符。许多网页和文档都使用这种编码格式。
- utf16le: 2 个或4 个字节,小字节序编码的 Unicode 字符。支持代理对(U+10000 至U+10FFFF)。ucs2 是它的别名
- base64: Base6 编码。
- latin1:一种将 Buffer编码成单字节编码字符串的方法。binary 是latin1的别名
- hex: 将每个字节编码成两个十六进制的字符。
发表评论