Подтвердить что ты не робот

Преобразование строки в буфер Node

Я использую библиотеку, которая по вызову функции возвращает toString буфера.

Точный код

return Buffer.concat(stdOut).toString('utf-8');

Но мне не нужна строковая версия.

Мне просто нужен буфер

Итак, как преобразовать строку обратно в буфер.

Что-то вроде if

var bufStr = Buffer.concat(stdOut).toString('utf-8');
//convert bufStr back to only Buffer.concat(stdOut).

Как это сделать?

Я пробовал делать

var buf = Buffer.from(bufStr, 'utf-8');

Но он выбрасывает utf-8 не является функцией. Когда я делаю

var buf = Buffer.from(bufStr);

Он выдает TypeError: это не типизированный массив.

Спасибо

4b9b3361

Ответ 1

Вы можете сделать:

var buf = Buffer.from(bufStr, 'utf8');

Но это немного глупо, поэтому другим предложением было бы скопировать минимальный объем кода из вызываемой функции, чтобы позволить себе доступ к исходному буферу. Это может быть довольно легко или довольно сложно в зависимости от деталей этой библиотеки.

Ответ 2

Примечание: Просто повторите комментарий Джона Звинка в ответ.

Одной из проблем может быть то, что вы используете более старую версию Node (на данный момент я не могу обновить код, пораженный с помощью v4.3.1). Простым решением здесь является использование устаревшего способа:

new Buffer(bufferStr)

Ответ 3

Вы можете использовать Buffer.from() для преобразования строки в буфер. Более подробную информацию об этом можно найти здесь

var buf = Buffer.from('some string', 'encoding');

например

var buf = Buffer.from(bStr, 'utf-8');

Ответ 4

Это работает для меня, вы можете изменить свой код следующим образом

var responseData=x.toString();

к

var responseData=x.toString("binary");

и, наконец,

response.write(new Buffer(toTransmit, "binary"));