Преобразование строки в буфер 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: это не типизированный массив.
Спасибо
Ответы
Ответ 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"));