背景:我使用node.js通过串行连接从设备获取音量设置。我需要以整数值的形式获取这些数据。将缓冲区中的十六进制值转换为整数
我有数据在缓冲区(“BUF”),并正在使用readInt16BE()转换成int,如下所示:
console.log(buf)
console.log(buf.readInt16BE(0))
这给了我下面的输出,因为我调整外部设备:
<Buffer 00 7e>
126
<Buffer 00 7f>
127
<Buffer 01 00>
256
<Buffer 01 01>
257
<Buffer 01 02>
258
问题:一切看起来很好,直到我们到达127,那么我们就跳转到256也许是是与符号和无符号整数 - 我不知道!
不幸的是我有关于外部设备的文档非常有限,我不得不进行反向工程!它可能只发送一个7位值吗?希望有一种解决办法呢?
关于解决方案 - 我也必须能够从int转换回这种格式!
问题:当7F似乎是我的设备发送的最大值时,如何创建一个连续的整数范围,这会导致我的整数范围大幅跳跃?
谢谢:)
是否有意义为您的设备返回负数?它看起来像设备使用该位作为符号,在这种情况下,将缓冲区作为16位值读取是不正确的。 – forrestj