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

How do I manually replicate a 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

有什么帮助吗?

更新:

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

我不确定这是否被认为是 'canonical' 方式,但它有效:

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

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

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

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

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

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

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

或者,您可以从一串十六进制字符串创建缓冲区:

var CRLF = new Buffer('0d0a', 'hex');

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

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