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

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

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

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

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

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

相关推荐
qq_340474021 天前
1.4 Labview中表格的使用的使用
labview·labview表格·设置字体颜色
LabVIEW开发1 天前
LabVIEW 动态信号分析
labview
自由的好好干活1 天前
从0开始使用LabVIEW操作数据采集卡-检测设备连接是否成功和设置
labview
LabVIEW开发11 天前
LabVIEW气体污染无线监测
网络·labview·labview知识·labview功能·labview程序
LabVIEW开发12 天前
使用 LabVIEW 的调用库函数节点访问 DLL 函数
labview·labview知识·labview功能·labview程序
LabVIEW开发12 天前
LabVIEW 泵轮检测系统
labview·labview知识·labview功能·labview程序
LabVIEW开发12 天前
LabVIEW加载 STL 模型至 3D 场景 源码见附件
3d·labview·labview知识·labview功能·labview程序
LabVIEW开发17 天前
LabVIEW汽车发动机振动测试
汽车·labview
丨 丨22 天前
LabVIEW软件全面解析:图形化编程的工业级应用指南
labview
LabVIEW开发1 个月前
LabVIEW 瀑布图与游标操作
labview·labview知识·labview功能·labview程序