Получение значений FLOAT, DOUBLE, INT или BOOL из буфера - PullRequest
0 голосов
/ 23 октября 2018

Добрый день, уважаемое сообщество,

Я работаю над сетевым проектом, в котором я получаю данные через сокет UDP от программного обеспечения, называемого VDMX, и пытаюсь проанализировать вышеупомянутые типы данных из буфера.

В моем приложении node.js я получаю значения со следующим клиентом сокетов без проблем:

const dgram = require('dgram');
const server = dgram.createSocket('udp4');

server.on('error', (err) => {
  console.log(`server error:\n${err.stack}`);
  server.close();
});

server.on('message', (msg, rinfo) => {
  console.log(msg.toString());
});

server.on('listening', () => {
  const address = server.address();
  console.log(`server listening ${address.address}:${address.port}`);
});

server.bind(1235);

Однако данные, полученные из программного обеспечения, я не уверен, как проанализировать необходимую частьиз данных, отправленных в виде строки / буфера.

В каждой отправляемой информации есть информация о префиксе информации OSC в данных, отправляемых как '/ lux' по умолчанию.Когда я выбираю разные типы данных, вот что я получаю в консоли Node.js:

Если я выбираю float:

/lux,fB�F�
/lux,fB��
/lux,fB�ɘ
/lux,fB��

Если я выбираю double:

/lux,d@L ��ϑL
/lux,d@L��S�
�|�x,d@K�f
/lux,d@K�Y�)�

Если я выберу 64-разрядное целое число:

/lux,h1
/lux,h0
/lux,h/
/lux,h.

Я был бы очень признателен, если бы вы могли подсказать мне, как получить значения из этих буферов.Заранее большое спасибо!

1 Ответ

0 голосов
/ 23 октября 2018

использование msg.readDoubleLE(offset), msg.readFloat32LE(offset) и аналогичные функции

https://nodejs.org/dist/latest-v10.x/docs/api/buffer.html#buffer_buf_readdoublele_offset

...