node.js学习(十三、Buffer模块)
2017-03-22 16:26
609 查看
Buffer主要用来处理二进制流,适用于tcp流或文件流的处理。
Buffer跟其他语言的int[]数组类似。Buffer 的大小在其创建时就已确定,且不能调整大小。
Buffer为全局对象,无需require即可使用。
1.Buffer.alloc(size[, fill[, encoding]])
初始化size个字节的Buffer。
size 必须小于或等于 buffer.kMaxLength 的值【32位系统最大为1GB,即(2^30)-1;64位系统最大值为2GB,即(2^31)-1】,否则会抛出 RangeError 错误。 如果 size 小于或等于0,则创建一个长度为0的 Buffer 。
fill | | 用来预填充新建的 Buffer 的值。所有字节都是填充的值。
encoding 如果 fill 是字符串,则该值是它的字符编码。 默认: ‘utf8’
2.Buffer.allocUnsafe(size)
与alloc类似,区别只是allocUnsafe调用时,buffer被填充的不一定全是0.
3.Buffer.byteLength(string[, encoding])
获取字符串的字节长度
4.Buffer.compare(buf1, buf2)
比较两个buffer
5.Buffer.concat(list[, totalLength])
拼接多个buffer
6.Buffer.from(array)
通过array 创建一个新的 Buffer 。
array 数值数组
7.Buffer.from(arrayBuffer[, byteOffset[, length]])
arrayBuffer TypedArray 或 ArrayBuffer 的 .buffer 属性
byteOffset 从 arrayBuffer 开始拷贝的位置。 默认: 0
length 从 arrayBuffer 拷贝多少字节。 默认: arrayBuffer.length - byteOffset
当传入一个 TypedArray 实例的 .buffer 属性的引用时,这个新建的 Buffer 会像 TypedArray 那样共享同一分配的内存。
8.Buffer.from(buffer)
从某个buffer中拷贝数据,返回新的buffer。不共享内存。
9.Buffer.from(string[, encoding])
通过字符串创建buffer
10.buf.slice([start[, end]])
截取buffer,内存共享。
11.buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
target 要拷贝进的 Buffer 。
targetStart target 中开始拷贝进的偏移量。 默认: 0
sourceStart buf 中开始拷贝的偏移量。 当 targetStart 为 undefined 时忽略。 默认: 0
sourceEnd buf 中结束拷贝的偏移量(不包含)。 当 sourceStart 为 undefined 时忽略。 默认: buf.length
返回: 被拷贝的字节数。
拷贝 buf 的一个区域的数据到 target 的一个区域,即便 target 的内存区域与 buf 的重叠。
Buffer跟其他语言的int[]数组类似。Buffer 的大小在其创建时就已确定,且不能调整大小。
Buffer为全局对象,无需require即可使用。
1.Buffer.alloc(size[, fill[, encoding]])
初始化size个字节的Buffer。
size 必须小于或等于 buffer.kMaxLength 的值【32位系统最大为1GB,即(2^30)-1;64位系统最大值为2GB,即(2^31)-1】,否则会抛出 RangeError 错误。 如果 size 小于或等于0,则创建一个长度为0的 Buffer 。
fill | | 用来预填充新建的 Buffer 的值。所有字节都是填充的值。
encoding 如果 fill 是字符串,则该值是它的字符编码。 默认: ‘utf8’
const buf1 = Buffer.alloc(10); console.log(buf1); const buf2 = Buffer.alloc(10,"1"); console.log(buf2); const buf3 = Buffer.alloc(10,1); console.log(buf3); const buf4 = Buffer.alloc(10,buf2); console.log(buf4); //输出 <Buffer 00 00 00 00 00 00 00 00 00 00> <Buffer 31 31 31 31 31 31 31 31 31 31> <Buffer 01 01 01 01 01 01 01 01 01 01> <Buffer 31 31 31 31 31 31 31 31 31 31>
2.Buffer.allocUnsafe(size)
与alloc类似,区别只是allocUnsafe调用时,buffer被填充的不一定全是0.
const buf5 = Buffer.allocUnsafe(5); console.log(buf5); buf5.fill(0); console.log(buf5); //输出 <Buffer 00 51 b3 8e f7> <Buffer 00 00 00 00 00>
3.Buffer.byteLength(string[, encoding])
获取字符串的字节长度
console.log(Buffer.byteLength(1)); console.log(Buffer.byteLength("1")); console.log(Buffer.byteLength("aGVsbG8gd29ybGQ=")); console.log(Buffer.byteLength("aGVsbG8gd29ybGQ=","base64")); console.log("\u00bd + \u00bc = \u00be",Buffer.byteLength("\u00bd + \u00bc = \u00be=","utf-8")); //输出 1 1 16 (未加编码以原始字符数计算) 11 ½ + ¼ = ¾ 12 (utf8字符占2字节*3 空格占一字节*4 其他字符占1字节*2)
4.Buffer.compare(buf1, buf2)
比较两个buffer
const buf1 = Buffer.from('a'); const buf2 = Buffer.from('b'); const buf3 = Buffer.from('c'); console.log(Buffer.compare(buf2,buf1)); console.log(Buffer.compare(buf2,buf2)); console.log(Buffer.compare(buf2,buf3)); //输出 1 //大 0 //等 -1 //小
5.Buffer.concat(list[, totalLength])
拼接多个buffer
6.Buffer.from(array)
通过array 创建一个新的 Buffer 。
array 数值数组
7.Buffer.from(arrayBuffer[, byteOffset[, length]])
arrayBuffer TypedArray 或 ArrayBuffer 的 .buffer 属性
byteOffset 从 arrayBuffer 开始拷贝的位置。 默认: 0
length 从 arrayBuffer 拷贝多少字节。 默认: arrayBuffer.length - byteOffset
当传入一个 TypedArray 实例的 .buffer 属性的引用时,这个新建的 Buffer 会像 TypedArray 那样共享同一分配的内存。
8.Buffer.from(buffer)
从某个buffer中拷贝数据,返回新的buffer。不共享内存。
9.Buffer.from(string[, encoding])
通过字符串创建buffer
10.buf.slice([start[, end]])
截取buffer,内存共享。
11.buf.copy(target[, targetStart[, sourceStart[, sourceEnd]]])
target 要拷贝进的 Buffer 。
targetStart target 中开始拷贝进的偏移量。 默认: 0
sourceStart buf 中开始拷贝的偏移量。 当 targetStart 为 undefined 时忽略。 默认: 0
sourceEnd buf 中结束拷贝的偏移量(不包含)。 当 sourceStart 为 undefined 时忽略。 默认: buf.length
返回: 被拷贝的字节数。
拷贝 buf 的一个区域的数据到 target 的一个区域,即便 target 的内存区域与 buf 的重叠。
let buffer=Buffer.from("abc") ; let buf2=Buffer.alloc(1); buffer.copy(buf2); console.log(buf2.toString()) //输出 a
相关文章推荐
- node.js学习笔记--官方原生模块-queryString,url,Buffer
- NODE.JS学习笔记——CRYPTO 加密模块
- node.js学习教程之三:模块
- node.js学习笔记5——核心模块1
- Node.js学习——基本模块之fs
- node.js学习笔记(8)--multer模块文件上传
- Node.js学习(9)----核心模块
- node.js认识学习二:__dirname获取当前模块文件所在目录的完整绝对路径
- Node.js处理I/O数据之Buffer模块缓冲数据
- Node.js之缓冲模块Buffer
- 学习Node.js模块机制
- Node.js学习笔记【1】入门(服务器JS、函数式编程、阻塞与非阻塞、回调、事件、内部和外部模块)
- Node.js学习笔记3【核心模块--event】
- 从Node.js的child_process模块来学习父子进程之间的通信
- node.js学习之模块篇(转载)
- 【Node.js学习笔记1--模块 npm】
- node.js模块之Buffer模块
- Node.js中的模块机制学习笔记
- node.js学习笔记(二)--使用mongoose简单的CRUD操作及测试模块mocha的使用
- Node.js学习 - Buffer