#node.js
#node.js
Вопрос:
Как преобразовать буфер в массив?
Буфер (шестнадцатеричные значения):
myBuffer = <Buffer 48 65 6c 6c 6F >
Я хочу массив переменного типа, подобный этому:
myArray = [48, 65, 6c, 6c, 6F] // Hex values
or
myArray = [72, 101, 108, 108, 111] // Decimal values
ВАЖНО: я не хочу использовать for
цикл для перемещения буфера от байта к байту. Я хочу знать, существует ли собственный способ преобразования буфера в массив.
Комментарии:
1.
<Buffer 48 65 6c 6c 6F >
это строка или тег. И какова взаимосвязь между[48, 65, 6c, 6c, 6F] or like this [72, 101, 108, 108, 111]
этими массивами? .В html<Buffer 48 65 6c 6c 6F >
недопустимый2. @prasanth кажется, что первый массив представлен в шестнадцатеричном формате, а второй массив — это шестнадцатеричные значения в десятичном формате. Я думаю, что они ссылаются на объекты буфера в Node, а не на строки / теги.
3. @prasanth OP говорит о ArrayBuffer: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference /…
4. @prasanth Вероятно, это потому, что OP не знает, как это записать, или, может быть, я действительно ошибаюсь, и это совершенно другое дело… в любом случае, лучший способ действий здесь — проголосовать за закрытие, поскольку «неясно, о чем вы спрашиваете» .
5. @wBB As
Buffer
не является актуальной вещью в native JavaScript. Вы могли бы либо ссылаться наArrayBuffer
, либо Node.jsBuffer
. Хотя формат<Buffer 48 65 6c 6c 6f>
выглядит как Node.jsBuffer
в консоли. войдите в меня, так что, я полагаю, вы имеете в виду Node.jsBuffer
.
Ответ №1:
Похоже, вы имеете в виду Node.js Буфер. Если это так, вы можете просто сделать это:
var buf = new Buffer([72,101,108,108,111]) //<Buffer 48 65 6c 6c 6f>
var arr = Array.prototype.slice.call(buf) //[72,101,108,108,111]
Ответ №2:
Если вы говорите о arraybuffer, попробуйте этот метод:
function ab2str(buf) {
return String.fromCharCode.apply(null, new Uint16Array(buf));
}
Если вы говорите о буферном объекте nodejs, попробуйте это:
let bufferOne = Buffer.from('This is a buffer example.');
console.log(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);
console.log(json);
// Output: {"type":"Buffer","data": [84,104,105,115,32,105,115,32,97,32,98,117,102,102,101,114,32,101,120,97,109,112,108,101,46]}
json = JSON.parse(json);
json.data.forEach(e=> console.log(e.toString(16)));
// Output: 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
Ответ №3:
В ES6 это также сработало бы:
const buffer = new Buffer([72,101,108,108,111])
const arr = [...buffer] //[72,101,108,108,111]