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

摘要:
场景:当使用Python模拟设备执行Modbus TCP协议时,读取的寄存器值为S16。如何获得正确的负值?对于其他强类型语言,需要根据负补码原理获得高符号位值,然后将其反转以获得正确的负值。

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

代码如下:

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

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

免责声明:文章转载自《Python中读取到16进制数如何转成有符号数值》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇linux添加用户,修改用户密码,修改用户权限,设置root用户操作iOS APP提交上架流程下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

在lua环境中使用protobuf

最近在cocos2dx的项目中,需要在LUA脚本层使用protobuf协议。官方已经推出了很多种语言的版本。但唯独LUA版本不全。于是开始研究protobuf在LUA下的实现,将完整的过程记录了下来,希望对其它人能有所帮助。 1、下载protoc-gen-lua 可以通过HG从服务器(hg clonehttps://code.google.com/p/pr...

Python什么是二次开发的意义?python在.net项目采用

任何人都知道python在.net该项目是做什么的啊? 辅助用途,用作“二次开发”。.net站点的话python主要是CGI才用。能够用python编写B/S程序。 解释一下二次开发: 对于Python来说。他本身未定义主函数 , 和LUA一样,他们都是解释语言,须要一个拥有主函数的主语言帮助解释。那么不管是在C/C++/JAVA/C#中都是一样...

python 模块相互import会出问题

copy:https://blog.csdn.net/sinat_38682860/article/details/105497154?utm_medium=distribute.pc_relevant.none-task-blog-BlogCommendFromMachineLearnPai2-4.control&depth_1-utm_sour...

python面试题库——1Python基础篇

第一部分 Python基础篇(80题) 为什么学习Python?             语言本身简洁,优美,功能超级强大,跨平台,从桌面应用,web开发,自动化测试运维,爬虫,人工智能,大数据处理都能做         Python和Java、PHP、C、C#、C++等其他语言的对比?                C语言由于其底层操作特性和历史的积累...

康少带你python项目从部署到上线云服务器

首先,服务器要安装nginx和mysql,网站文件建议放在/usr/local/www,环境python3.6+mysql5.7,阿里云的服务器可以用公共镜像有一个配置好的,不然就自己装一下环境吧。 本项目名称:loginOrRegister 对于小白来说首先我们需要干的一件事情就是安置与配置nginx下面就是nginx的配置 1.nginx配置 安装ng...

基于MSAA的自动化封装和设计—python版(转)

MSAA也就是Microsoft© Active Accessibility,是微软90年代推出的一套技术。事实上,这套东西的初衷是为了供残疾人使用windows系统,比如放大镜,鼠标事件等等。这套东西后来被广泛使用在自动化测试中,也就是我们常说的IAccessible 接口,由于它为自动化测试提供了方便,IBM也扩展了这套接口,IAccessible2(...