labview实现有符号位16进制转二进制补码转真值

今天在用一个采集模块时,发现读出寄存器的数据是不同的,它有两种范围,一个时十六进制整型,一种是有符号位十六进制,对应的量程和范围也是不同的,针对之前读取温度没有出现负数的情况,应该是转成了16位无符号类型。

接下来我们来转换成16位有符号类型,这里也是把读出的16进制字符串格式转换成普通字符串格式,然后用labview自带的16进制转数值的函数来实现值得转换。

当得到16进制字符串时,我们需要把16进制转换成二进制进行处理,但是labview字符串转二进制不太好转,这里用到了格式化写入字符串,得到一串二进制字符,然后判断最高位是否存在来判断得到的数是正数还是负数,因为最高位为0时不显示,这里就直接用字符串长度判断。

当得到得长度为16时,证明最高位是1,然后得到的数为负数,接下来要对第1位到第15位二进制字符进行处理,由于不好进行补码操作,这里先把字符串转换成字节数组,然后通过字节数组与1进行异或操作得到二进制数的反码,然后再把字节数组转换成字符串,通过扫描值和格式化写入字符串把二进制数转换成16进制数,然后通过十六进制值十进制转换函数,转成十进制,由于补码要原码取反加一,加一的进一操作不太好实现,这里就直接在取反之后加一即可,然后乘上符号位就得到真值了。

整个函数如下。方便大家使用和学习。也欢迎大家有更好的方法可以分享交流在下方。

相关推荐
labview_自动化11 分钟前
RabbitMQ
分布式·rabbitmq·labview
浅浅的小草7 小时前
LabVIEW在银河麒麟V10系统下的运行使用
labview
LabVIEW开发21 小时前
LabVIEW航空发动机冲击轴承监测
labview·labview知识·labview功能·labview程序
LabVIEW开发1 天前
LabVIEW液位边缘检测
图像处理·计算机视觉·labview·labview知识·labview功能·labview程序
LabVIEW开发3 天前
LabVIEW用直线边缘检测实现液位测量
数码相机·计算机视觉·labview·labview知识·labview功能·labview程序
LabVIEW开发4 天前
LabVIEW的Vision边缘工具(Edge Tool)功能
图像处理·计算机视觉·labview·labview知识·labview功能·labview程序
LabVIEW开发4 天前
LabVIEW暂态电能质量监测系统
labview·labview知识·labview功能·labview程序
LabVIEW开发7 天前
LabVIEW燃气轮机组励磁控制器测试
labview·labview知识·labview功能·labview程序
清风66666610 天前
基于单片机的档案库房漏水检测报警labview上位机系统设计
数据库·单片机·毕业设计·课程设计·labview·期末大作业
斯金13 天前
LabVIEW连接本地部署大模型
labview