Это пример преобразования строки в буфер и обратно в строку:
let bufferOne = Buffer.from('This is a buffer example.');
console.info(bufferOne);
// Output: <Buffer 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e>
let json = JSON.stringify(bufferOne);
let bufferOriginal = Buffer.from(JSON.parse(json).data);
console.info(bufferOriginal.toString('utf8'));
// Output: This is a buffer example.
Теперь представьте, что кто-то просто дал вам только эту строку в качестве отправной точки:<Buffer 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e>
- как бы вы преобразовали его в обычное значение этой «буферной» строки?
Я пробовал с:
let buffer = '<Buffer 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e>'
json = JSON.stringify(buffer);
console.info(json);
Дает вывод:
"<Buffer 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e>"
вы имеете в виду конвертировать в JSON? Это уже строка?
Ваша буферная переменная уже является строкой!
Я пытаюсь преобразовать это «значение строкового буфера» из буфера в строку.
Добавлен пример, когда работает, и мне нужно сделать то же самое, но начиная со строки...



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Для этого нет собственного способа, но я написал для вас пример метода:
function bufferFromBufferString(bufferStr) {
return Buffer.from(
bufferStr
.replace(/[<>]/g, '') // remove < > symbols from str
.split(' ') // create an array splitting it by space
.slice(1) // remove Buffer word from an array
.reduce((acc, val) =>
acc.concat(parseInt(val, 16)), []) // convert all strings of numbers to hex numbers
)
}
результат:
const newBuffer = bufferFromBufferString('<Buffer 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e>')
> newBuffer
<Buffer 54 68 69 73 20 69 73 20 61 20 62 75 66 66 65 72 20 65 78 61 6d 70 6c 65 2e>
> newBuffer.toString()
'This is a buffer example.'
Автоматически преобразуется при объединении с пустой строкой:
console.info('' + bufferOne)
Другой метод достижения этого:
function toBuffer(bufferString) {
const hex = bufferString.match(/\s[0-9a-fA-F]+/g).map((x) => x.trim());
return Buffer.from(hex.join(''), 'hex');
}
const buffer = '<Buffer 49 20 6c 6f 76 65 20 79 6f 75>';
const actualBuffer = toBuffer(buffer);
console.info(buffer); // <Buffer 49 20 6c 6f 76 65 20 79 6f 75>
console.info(actualBuffer); // <Buffer 49 20 6c 6f 76 65 20 79 6f 75>
console.info(actualBuffer === buffer); // false
console.info(actualBuffer.toString()); // Secret message
Та же функция, другой синтаксис:
const toBuffer = (bufferString) =>
Buffer.from(
bufferString
.match(/\s[0-9a-fA-F]+/g)
.map((x) => x.trim())
.join(''),
'hex'
);
Каков ваш ожидаемый результат?