通过Node.js套接字发送和接收十六进制代码

时间:2019-05-28 07:33:18

标签: node.js sockets

我正在将十六进制代码发送到nodejs套接字应用程序中的计算机,并从以下代码接收十六进制答案:

socket.on('data', function(data){
  console.log('Socket:'+Buffer.from(data).toString('hex'));
});

在控制台中,我收到以下消息: 0104000100150104125d2befbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbdefbfbd00efbfbdefbfbd

期望的是:

01 04 00 01 00 15 01 04 12 5D 2B FF FF FF FF FF FF FF FF FF FF FF FF 80 00 FF FF

我不明白为什么还有其他数据。

1 个答案:

答案 0 :(得分:0)

似乎数据是字符串,而不是缓冲区。

只需尝试此代码

const data = Buffer.from('01 04 00 01 00 15 01 04 12 5D 2B FF FF FF FF FF FF FF FF FF FF FF FF 80 00 FF FF'.split(' ').map(x => parseInt(x, 16)));
console.log(Buffer.from(data).toString('hex'));
const str = data.toString(); // <- problem!!!
console.log(Buffer.from(str).toString('hex'));

您不能直接发送二进制缓冲区,例如,只能转换为十六进制字符串,然后转换为二进制缓冲区。

阅读本主题 Node Buffers, from utf8 to binary