Python中读取到16进制数如何转成有符号数值

Posted yqmcu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python中读取到16进制数如何转成有符号数值相关的知识,希望对你有一定的参考价值。

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

代码如下:

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

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

以上是关于Python中读取到16进制数如何转成有符号数值的主要内容,如果未能解决你的问题,请参考以下文章

字符串格式说明

格式化操作

16进制字符串如何转化16进制数值

用python输入一个十进制数,输出其二进制串,八进制串,十六进制串

怎样用python编程将二进制转成10进制

excel表中如何将大于512的十进制转成二进制