Я пытаюсь получить объект json из буфера с помощью mermoryjs.readBuffer()
, и я уже некоторое время занимаюсь этим, я не уверен, что еще делать. Вот что я пробовал:
import { readBuffer } from 'memoryjs';
let buffer: Buffer = readBuffer(process, address, bufferLength);
console.info(buffer);
// (correctly) OUTPUTS -> <Buffer 88 77 b3 10 00 00 00 00 00 00 00 00 60 d5 69 1b 06 00 00 00 16 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 40 c2 52 16 01 00 00 00 00 9a 8f 07 00 00 ... 6 more bytes>
console.info(buffer.toJson());
// OUTPUS:
{
type: 'Buffer',
data: [
136, 119, 179, 16, 0, 0, 0, 0, 0, 0, 0, 0,
96, 213, 105, 27, 6, 0, 0, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
64, 194, 82, 22, 1, 0, 0, 0, 0, 154, 143, 7,
0, 0, 0, 0, 0, 0, 0, 0
]
}
console.info(JSON.parse(JSON.stringify(buffer)));
// OUTPUS:
{
type: 'Buffer',
data: [
136, 119, 179, 16, 0, 0, 0, 0, 0, 0, 0, 0,
96, 213, 105, 27, 6, 0, 0, 0, 22, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0,
64, 194, 82, 22, 1, 0, 0, 0, 0, 154, 143, 7,
0, 0, 0, 0, 0, 0, 0, 0
]
}
console.info(buffer.toString());
// OUTPUTS: �w�►`�i♠▬�R▬☺��
И впоследствии, когда он попробует это:
console.info(JSON.parse(buffer.toString()));
// OUTPUTS:
SyntaxError: Unexpected token � in JSON at position 0
at JSON.parse (<anonymous>)
Использование функции read() structron (пакет npm https://www.npmjs.com/package/structron)
import Struct = require('structron'); // doing " import Struct from 'structron' " gives an import error
let struct = new Struct();
console.info(this.struct.read(buffer, address));
// OUPUTS: {}
Я читаю память приложения в режиме реального времени, и когда я устанавливаю флажок в приложении, я вижу, что buffer
var имеет 00
изменение на 01
и внутренности, поэтому я не думаю, что проблема возникает из-за неправильного получения данных буфера ( с неправильным address
или process
).
Я думаю, может быть, я смогу декодировать/десериализовать массив int из buffer.data
в объект json, но я не уверен, есть ли способ сделать это.
Любой вклад мне очень поможет. Заранее спасибо.
🤔 А знаете ли вы, что...
Node.js может быть использован для создания микросервисов и масштабируемых приложений.
Лучший способ сериализовать буфер в виде открытого текста, вероятно, состоит в том, чтобы преобразовать его в base64:
const buf = Buffer.from("asdf");
// this is a string you can store in a JSON object somewhere
const serialized = x.toString("base64");
console.info(serialized); // YXNkZg==
// you can get the serialized base64 from a JSON object
const deserialized = Buffer.from(serialized, "base64");
console.info(deserialized); // <Buffer 61 73 64 66>
console.info(deserialized.toString("utf8")); // asdf
Обратите внимание, что если вы можете, вы должны записать буфер непосредственно в файл, так как base64 занимает больше места, чем необработанные двоичные данные.