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

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

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

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

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

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

相关推荐
LabVIEW开发16 小时前
LabVIEW 局部变量为何引发竞争条件?四种同步机制
开发语言·labview
LabVIEW开发1 天前
LabVIEW 初学者架构怎么选?跟着痛点升级
labview
LabVIEW开发2 天前
LabVIEW 机载 DIAL:每秒万次甲烷测量
人工智能·labview·labview知识·labview功能·labview程序
LabVIEW开发2 天前
LabVIEW 局部变量与数据流:这道 CLAD 题为什么答案是 Undefined
java·开发语言·labview
LabVIEW开发2 天前
Fluke 万用表:接 LabVIEW 常踩的 5 个坑
labview·labview知识·labview功能·labview程序
LabVIEW开发3 天前
LabVIEW 水泵异常检测:从多源传感、峭度特征到 SAE+ELM 智能诊断
labview
helesheng4 天前
用NI的数据采集卡实现简单电子测试之7——用“硬件计数器+软件定时”的方法实现测频率 [原创cnblogs.com/helesheng]
labview·数据采集卡·虚拟仪器·usb-6009·测频率
LabVIEW开发5 天前
CTM-3 红外测温仪 + LabVIEW 温度怎么测?
算法·labview·测试·labview程序
LabVIEW开发5 天前
CMT 矢量网络分析仪 + LabVIEW 测S参数?
labview·测试·labview程序
LabVIEW开发6 天前
FlexRIO 在轨图像取舍:判决要跑在数据进内存之前
labview·fpga·labview功能·labview程序·flexrio