场景:用Python模拟设备做 Modbus TCP 协议时,读取到的寄存器值是S16(有符号16进制数),如何能得到正确的负数值呢?

代码如下:

def get_s16(val):
    if val < 0x8000:
        return val
    else:
        return (val - 0x10000)

解释:由于Python不是强类型的语言,对于数据的值的大小没有严格的限制,所以可以直接通过做减法来获得正确的负数值。如果是其他的强类型语言,就需要按照负数补码原理来获取到高位符号位值后再取反处理,获得正确的负数值。

相关文章:

  • 2022-12-23
  • 2021-11-04
  • 2021-07-15
  • 2022-12-23
  • 2021-06-21
  • 2021-06-25
  • 2022-12-23
  • 2022-12-23
猜你喜欢
  • 2021-12-10
  • 2021-12-10
  • 2021-07-09
  • 2022-12-23
  • 2022-12-23
  • 2021-09-29
相关资源
相似解决方案