从缓冲区检索FLOAT,DOUBLE,INT或BOOL值

时间:2018-10-23 06:55:53

标签: javascript node.js sockets udp osc

下午好,亲爱的社区,

我正在一个网络项目中,我通过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);

但是从软件中检索到的数据,我不确定如何从作为字符串/缓冲区发送的数据中解析必要的部分。

在发送的每个数据中,默认情况下,在发送的数据中,例如'/ lux',都有OSC信息的前缀信息。当我选择其他数据类型时,这是我在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 :(得分:0)

使用msg.readDoubleLE(offset)msg.readFloat32LE(offset)和类似功能

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