Node.js API实例讲解——Buffer是什么
Buffer是什么
Buffer类是一个全局的直接处理二进制数据类型。它可以以各种方式构造。
纯Javascript对于Unicode的处理是友好的,而对二进制并不友好。但处理TCP数据流和文件系统,必须要处理字节流,所以node.js提供一套策略来创建和操作字节流。
数据储存在一个Buffer实例中,一个Buffer的大小是固定的,类似于不可变的整数数组。
Buffer与字符串之间的转换需要指定明确的编码。
Buffer支持的编码:
'ascii'编码,只为7位的ASCII的数据。这个编码方法非常快!
'utf8' 编码,支持Unicode字符。
'utf16le' 编码,小端编码的Unicode字符。对(u10000 ~ u10FFFF)的支持。
'ucs2' 是 'utf16le' 编码的别名。
'base64' 是 Base64字符串编码。
'hex' 表示十六进制编码,每个byte编码为两个十六进制字符。
一个Buffer对象也可以使用一个类型数组。Buffer对象克隆到一个ArrayBuffer,用作类型数组存储支持。node.js提供的Buffer和标准类型化数组是两套不同的系统,所以Buffer和ArrayBuffer的内存不共享。
注意:虽然V8提供了标准化的类型化数组,但node.js自身定义的Buffer提供了更灵活强大的API,在之后的章节会详细讲解两者的转换与使用方法。
什么是类型化数组
可以使用类型化数组处理网络协议、二进制文件图片等二进制数据,这个在之前是无法做到的,这也是HTML5标准化支持。sex
book类型化数组包括以下类,ArrayBuffer、DataView、Int8Array、Uint8Array、Int16Array、Uint16Array、Int32Array、Uint32Array、Float32Array、Float64Array。
ArrayBuffer 对象
表示原始数据的缓冲区,用于存储不同类型化数组的数据。 无法从 ArrayBuffer 读取或向其写入,但是,可将其传递给类型化数组或 DataView 对象 以解释原始缓冲区。
DataView 对象
可以使用 DataView 对象 来将不同类型的二进制数据读取和写入ArrayBuffer中的任何位置。
Int8Array 对象
8 位二补码有符号整数
Uint8Array 对象
8 位无符号整数
Int16Array 对象
16 位二补码有符号整数
Uint16Array 对象
16 位无符号整数
Int32Array 对象
32 位二补码有符号整数
Uint32Array 对象
32 位无符号整数
Float32Array 对象
32 位 IEEE 浮点数
Float64Array 对象
64 位 IEEE 浮点数
之后章节将会详细介绍。
相关文章
- Node.js API实例讲解——http.IncomingMessage
- FIS3 , 为你定制的前端工程构建工具
- Node.js API实例讲解——Buffer的写入方法
- Node.js API实例讲解——Socket 对象
- Node.js API实例讲解——创建http服务器
- Node.js API实例讲解——Buffer的静态方法
- Node.js API实例讲解——https服务器与客户端
- Node.js API实例讲解——FS文件系统概述
- Node.js API实例讲解——进程的操作
- Node.js API实例讲解——二进制类型转换
- Node.js API实例讲解——创建UDP服务器
- Node.js API实例讲解——EventEmitter