微信小程序 Node.js (基础六) Buffer(缓冲区)
2017-07-07 15:03
776 查看
摘要: JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。
但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。
微信小程序 Node.js Buffer: JavaScript 语言自身只有字符串数据类型,没有二进制数据类型。 但在处理像TCP流或文件流时,必须使用到二进制数据。因此在 Node.js中,定义了一个 Buffer 类,该类用来创建一个专门存放二进制数据的缓存区。 在 node.js 中,Buffer 类是随 Node 内核一起发布的核心库。Buffer 库为 Node.js 带来了一种存储原始数据的方法,可以让 Node.js 处理二进制数据,每当需要在 Node.js 中处理I/O操作中移动的数据时,就有可能使用 Buffer 库。原始数据存储在 Buffer 类的实例中。一个 Buffer 类似于一个整数数组,但它对应于 V8 堆内存之外的一块原始内存。 创建Buffer1.长度为10的实例 var buf = new Buffer(10) 2.通过给定的数组创建 var buf = new Buffer([10,20,30,40,50]) 3.通过字符串创建 var buf = new Buffer("www.csdn.net","utf-8") utf-8 是默认的编码方式 支持以下编码:"ascii", "utf8", "utf16le", "ucs2", "base64" 和 "hex"。 写入缓存区.write()var buf = new Buffer(200) var len = buf.write("www.csdn.net") console.log("写入字节数:" + len) string - 写入缓冲区的字符串。 offset - 缓冲区开始写入的索引值,默认为 0 。 length - 写入的字节数,默认为 buffer.length encoding - 使用的编码。默认为 ‘utf8’ 。 缓存区读取.toString()buf = new Buffer(26); for (var i = 0 ; i < 26 ; i++) { buf[i] = i + 97; } console.log( buf.toString('ascii')); // 输出: abcdefghijklmnopqrstuvwxyz console.log( buf.toString('ascii',0,5)); // 输出: abcde console.log( buf.toString('utf8',0,5)); // 输出: abcde console.log( buf.toString(undefined,0,5)); // 使用 'utf8' 编码, 并输出: abcde encoding - 使用的编码。默认为 ‘utf8’ 。 start - 指定开始读取的索引位置,默认为 0。 end - 结束位置,默认为缓冲区的末尾。 Buffer转JSONvar buf = new Buffer('www.runoob.com'); var json = buf.toJSON(buf); console.log(json); 合并 Buffer.concat([,])var buf = new Buffer("北京") var buf1 = new Buffer("上海") var buf2 = Buffer.concat([buf,buf1],12) console.log(buf2.toString()) list用于合并的 Buffer 对象数组列表。 totalLength指定合并后Buffer对象的总长度。 比较 .compare(otherBuffer)在 Node.js v0.12.2 版本引入var buffer1 = new Buffer("AVCX") var buffer2 = new Buffer("ACVV") var result = buffer1.compare(buffer2) if(result < 0) { console.log(buffer1 + " 在 " + buffer2 + "之前"); }else if(result == 0){ console.log(buffer1 + " 与 " + buffer2 + "相同"); }else { console.log(buffer1 + " 在 " + buffer2 + "之后"); } 拷贝 .compare(buffer2)buf.copy(targetBuffer[, targetStart[, sourceStart[, sourceEnd]]]) targetBuffer - 要拷贝的 Buffer 对象。 targetStart - 数字, 可选, 默认: 0 sourceStart - 数字, 可选, 默认: 0 sourceEnd - 数字, 可选, 默认: buffer.length var buf1 = new Buffer("beiJing") var buf2 = new Buffer(8) buf1.copy(buf2) console.log("buf2 content:"+buf2.toString()) 剪裁 .slice(buffer2)buf.slice([start[, end]]) start - 数字, 可选, 默认: 0 end - 数字, 可选, 默认: buffer.length 返回值 返回一个新的缓冲区,它和旧缓冲区指向同一块内存,但是从索引 start 到 end 的位置剪切。 var buf1 = new Buffer("beiJing") var buf2 = buf1.slice(0,8) console.log("buf2 content:"+buf2) // beiJing 长度 .lengthbuf.length; //返回这个 buffer 的 bytes 数。注意这未必是 buffer 里面内容的大小。length 是 buffer 对象所分配的内存数,它不会随着这个 buffer 对象内容的改变而改变。 |
相关文章推荐
- 微信小程序 Node.js (基础六) Buffer(缓冲区)
- 微信小程序 Node.js (基础三) 回调函数
- 微信小程序 Node.js (基础十一) 全局对象
- 微信小程序 Node.js (基础五) EventEmitter
- 微信小程序 Node.js (基础七) Stream(流)
- 微信小程序 Node.js (基础十) 路由
- 微信小程序 Node.js (基础八) exports模块系统
- 微信小程序 Node.js (基础四) 事件循环
- 微信小程序 Node.js (基础九) 函数
- 微信小程序 Node.js (基础二) REPL (交互式解释器)
- 微信小程序 N 4000 ode.js (基础六) Buffer(缓冲区)
- 微信小程序 Node.js (基础七) Stream(流)
- Node.js Buffer(缓冲区)
- Node.Js Buffer类(缓冲区)-(三)文件读取实例
- 通过新浪云部署NideShop微信小程序商城(基于Node.js+MySQL+ThinkJS)
- Node.js Buffer(缓冲区)
- NideShop:基于Node.js+MySQL开发的微信小程序商城开源啦
- Node.Js Buffer类(缓冲区)-(一)
- (开源)基于vue, react, node.js, go开发的微商城(含微信小程序)
- 微信小程序开发教程(基础篇)3-app.js 解析