2015-01-25 2 views
0

У меня есть этот буфер: <Buffer 0d 0a> и мне интересно, как я могу его повторить, чтобы я мог протестировать его.Как вручную реплицировать буфер Node.js?

С <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 

Любая помощь?

Update:

Мне нужно создать буфер и не копировать его как поток Слушаю посылает буфер Я ищу.

+0

Console.log показывает некоторое текстовое представление буфера. Это не то, как вы могли бы создать его. –

ответ

3

Эти байты обозначаются цифрами в шестнадцатеричном формате. Для того, чтобы ввести их в JavaScript, вы должны префикс их 0x:

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

В качестве альтернативы вы можете создать буфер из строки HEX:

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

Обратите внимание, что это вызовет ошибку («TypeError : Invalid hex string "), если строка содержит пробелы или другие символы, но вы можете их первыми удалить:

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

Я не уверен, если это считается 'канонический' способ, но он работает:

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

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

По API Docs в http://nodejs.org/api/buffer.html, самый простой, кажется:

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

copy будет буфером, содержащим копию содержимого буфера existing.

Смежные вопросы