nodejs: 理解Buffer
2014-04-01 23:07
357 查看
学习nodejs中buffer这一章,有一段写到buffer的拼接,其中一段源码非常优美,特拿来与大家共享。
正确的拼接方式是用一个数组来存储接收到的所有Buffer片段并记录下所有的中长度。Buffer.concat方法封装了从小Buffer对象到大Buffer对象的复制过程,实现十分细腻,值得学习。
var chunks = []; var size = 0; res.on('data', function(chunk){ chunks.push(chunk); size += chunk.length; }); res.on('end', function(){ var buf = Buffer.concat(chunks, size); var str = iconv.decode(buf, 'utf8'); console.log(str); })
正确的拼接方式是用一个数组来存储接收到的所有Buffer片段并记录下所有的中长度。Buffer.concat方法封装了从小Buffer对象到大Buffer对象的复制过程,实现十分细腻,值得学习。
Buffer.concat = function(list, length) { if(!Array.isArray(list)) { throw new Error('Usage:Buffer.concat(list, [length])'); } if(list.length === 0) { return new Buffer(0); } else if(list.length === 1) { return list[0]; } if(typeof length !== 'number') { length = 0; for(var i=0; i<list.length; i++) { var buf = list[i]; length += buf.length; } } var buffer = new Buffer(length); var pos = 0; for(var i=0; i<list.length; i++) { var buf = list[i]; buf.copy(buffer, pos); pos += buf.length; } return buffer; }
相关文章推荐
- 深入浅出nodejs学习笔记--第六~八章 理解Buffer 网络编程 构建WEB应用
- 理解Nodejs的Buffer
- nodejs: 理解Buffer
- nodejs基础 -- buffer缓冲区
- 深入理解Apache Mina (6)---- Java Nio ByteBuffer与Mina ByteBuffer的区别 .
- 深入理解ByteBuffer(转)
- 几行|代码|理解|nodeJS的模块化|加载|原理
- 深入理解数据库(DB2)缓冲池(BufferPool)
- nodejs渲染到页面的理解
- DirectX的Vertex Buffer顶点缓冲的理解和应用 Shader必知必会
- nodeJs模块的理解以及加载方式
- 理解NodeJS
- 从原理上理解NodeJS的适用场景
- Size of tape buffer的理解
- 深入浅出Node.js (6) - 理解Buffer
- ByteBuffer 理解
- DirectX的Vertex Buffer顶点缓冲的理解和应用
- 理解nodejs模块的scope
- Java NIO深入理解Buffer(缓冲区)
- HEVC中与dpb(decoder picture buffer)相关的语法元素的理解