我正在将十六进制代码发送到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
我不明白为什么还有其他数据。
答案 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'));
您不能直接发送二进制缓冲区,例如,只能转换为十六进制字符串,然后转换为二进制缓冲区。