我有一个由数据填充并以< Buffer 52 49 ...>开头的缓冲区
假设此缓冲区被定义为buf,如果我运行buf.readInt16LE(0),将返回以下内容:
18770
现在,十六进制值52和49的二进制表示是:
01010010 01001001
如果我将前15位转换为十进制,省略了两位的补数的第16位,我将得到以下结果:
21065
为什么我的结果没有给我18770的价值?
发布于 2013-12-11 16:46:44
18770是01001001 01010010,这是两个相反的字节,这就是readInt*LE函数将要做的事情。
使用readInt16BE。
发布于 2021-12-31 20:52:23
你可以这样做:parseInt("0x" + buf.toString("hex"))。可能要慢得多,但在紧要关头就行了。
https://stackoverflow.com/questions/20524761
复制相似问题