如何手动复制Node.js缓冲区?

时间:2015-01-25 07:02:13

标签: node.js buffer

我有这个缓冲区:<Buffer 0d 0a>我想知道如何复制它以便我可以对它进行测试。

使用<Buffer 00>我能够new Buffer([00]),但当我new Buffer([0d 0a])new Buffer([0d, 0a])时,我收到错误。

_0d0a = new Buffer([0d 0a]);
                    ^
SyntaxError: Unexpected token ILLEGAL
    at Module._compile (module.js:439:25)
    at Object.Module._extensions..js (module.js:474:10)
    at Module.load (module.js:356:32)
    at Function.Module._load (module.js:312:12)
    at Function.Module.runMain (module.js:497:10)
    at startup (node.js:119:16)
    at node.js:906:3

任何帮助?

更新

我需要创建缓冲区而不是将其复制为我正在侦听的流发送我正在寻找的缓冲区。

3 个答案:

答案 0 :(得分:4)

这些字节以十六进制显示为数字。要将它们输入JavaScript,您需要在其前面添加0x

var CRLF = new Buffer([0x0d, 0x0a]);

或者,您可以使用hex:

字符串创建缓冲区
var CRLF = new Buffer('0d0a', 'hex');

请注意,如果字符串包含空格或其他字符,则会抛出错误(“TypeError:无效的十六进制字符串”),但您可以先删除它们:

var CRLF = new Buffer('0d 0a'.replace(/\W/g, ''), 'hex');

答案 1 :(得分:1)

我不确定这是否被视为“规范”&#39;方式,但它的工作原理:

buff1 = new Buffer("hi there!");
buff2 = new Buffer(buff1.length);

buff1.copy(buff2);
console.log(buff2.toString()); // hi there!

答案 2 :(得分:1)

通过http://nodejs.org/api/buffer.html处的API文档,最直接的似乎是:

var copy = new Buffer(existing.length);
existing.copy(copy)

copy将是一个缓冲区,其中包含缓冲区existing的内容副本。