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

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

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

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

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

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

相关推荐
LabVIEW开发3 天前
LabVIEW 事件动态注册
labview·labview知识·labview功能·labview程序
LabVIEW开发4 天前
LabVIEW 实现陀螺系数计算
labview·labview程序
LabVIEW开发4 天前
LabVIEW菜单操控
labview·labview知识·labview功能
LabVIEW开发6 天前
LabVIEW多循环架构
labview·labview知识·labview功能·labview程序
LabVIEW开发17 天前
LabVIEW palette编辑VI
labview·labview知识·labview功能
LabVIEW开发17 天前
LabVIEW频谱仪自动校准系统
labview·labview开发案例
LabVIEW开发24 天前
LabVIEW动态调用VI
labview·labview知识·labview功能·labview程序
LabVIEW开发24 天前
LabVIEW受电弓测试
labview·labview开发案例
仰望天空—永强24 天前
LabVIEW 2025安装包| 免费免激活版下载| 附图文详细安装教程
python·嵌入式硬件·硬件工程·软件工程·labview
LabVIEW开发1 个月前
LabVIEW液压机智能监控
labview·labview开发案例