【问题标题】:node: converting buffers to decimal values节点:将缓冲区转换为十进制值
【发布时间】:2022-01-01 04:52:23
【问题描述】:

我有一个缓冲区,里面装满了数据并以< Buffer 52 49 ...>开头

假设此缓冲区定义为buf,如果我运行buf.readInt16LE(0),则返回以下内容:

18770

现在,十六进制值 52 和 49 的二进制表示是:

01010010 01001001

如果我将前 15 位转换为十进制,省略第 16 位作为二进制补码,我会得到以下结果:

21065

为什么我的结果没有给出 18770 的值?

【问题讨论】:

    标签: node.js math


    【解决方案1】:

    18770 是 01001001 01010010,这是你的 2 个字节反转,这就是 readInt*LE 函数要做的事情。

    使用readInt16BE

    【讨论】:

      【解决方案2】:

      您可以这样做:parseInt("0x" + buf.toString("hex"))。可能会慢很多,但会在紧要关头完成。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-04-30
        • 1970-01-01
        • 2016-03-14
        • 2012-02-20
        • 2016-09-23
        • 2019-11-26
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多