LabVIEW编程实例:整数类型数值的高/低位分解与拼接方法

本文详细介绍了在LabVIEW中如何将一个U32类型的数值按照高、低位分解成两部分U16数值,以及如何将两个U16数值拼接回原始的U32数值。具体方法包括直接函数法、数据移位法、求商和余数法、强制转换法(数组)和强制转换法(簇)。每种方法的程序框图代码和工作原理都有清晰的阐述。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在上位机软件与底层硬件通信时,经常遇到将一个整数数值按高、低位分解成不同的两部分数值的情况,如将U32类型的数值0x12345678拆分为两部分,即高16位0x1234,低16位0x5678,两部分代表不同的含义。或者反过来的情况,即将两个16位数值0x1234和0x5678拼接成一个数值32位数值0x12345678。

那么,在LabVIEW中有哪些方法可以实现将一个整数数值的按照高、低位分解成两部分或者反过来进行拼接呢?下面通过一个例子进行说明。

实例说明

这个例子的功能是将一个U32类型的整型数字按照不同的方法分解为高低两部分U16类型的数值,并且再将这两个U16类型的数值拼接成原始的U32型数值。软件运行主界面如下图所示:

这个例子中提供了五种方法,在主界面可通过“计算方式”单选框进行选择,分别为直接函数法、数据移位法、求商和余数法、强制转换法(数组)和强制转换法(簇),选择完计算方式后,点击计算按钮可显示对应的拆分及拼接结果。下面分别介绍这五种方法的具体程序框图实现过程。

直接函数法实现

这种方法直接利用LabVIEW软件中提供的“拆分数字”和“整数拼接”两个函数实现,程序框图代码如下图所示:

说明:这儿的计算过程放在了“计算”按钮的值改变事件中实现,在该事件中,根据“计算方式”选择的不同,在选择结构里面实现相应的计算。

数据移位法实现

这种方法利用“逻辑移位”、“与”及“或”函数配合实现,程序框图代码如下图所示:

当拆分时,将原始U32数值先右移16位得到高16位数值,将原始数值与0xFFFF相与后,得到低16位数值。

当拼接时,将高16位数值左移16位后再与低16位数值相或运算,就可得到原始的U32数值。

求商和余数法实现

这种方法程序框图代码如下图所示:

其拆分原理是利用“商与余数”函数将原始数值除以0x10000(即2的16次方),相当于右移16位,其整数部分即为高16位数值,其余数部分即为低16位数值

其拼接原理是拆分的逆过程,将高16位值乘以0x10000然后与低16位相加即可得到原始的U32数值。

实际上这种方法在本质上同上种数据移位的方法是相同的。

强制转换法(数组)实现

这种方法利用“强制类型转换”函数将原始U32类型数值转换为一维数组,然后进行拆分与拼接的实现,程序框图代码如下图所示:

当拆分时,将原始U32数值强制转换为U16类型的一维数组,那么数组的前两个元素就分别为高16位数值和低16位数值。

当拼接时,将由高16位数值和低16位数值组成的一维数组强制转换为U32类型的一个标量数值,该数值即为原始的U32数值。

强制转换法(簇)实现

这种方法利用“强制类型转换”函数将原始数值转换为簇类型(此处簇相当于C语言的结构体类型),然后进行拆分与拼接的实现,程序框图代码如下图所示:

这儿创建一个包含两个U16类型元素的簇,借助于该簇完成拆分与拼接功能。

对于都包含两个U16类型元素的一维数组和簇,由于在内存中数据的实际存放方式是完全相同的,因此,在本质上这种方法与上种方法强制转换为一维数组是相同的。

总结

这儿介绍了五种将整数数值按高低位分解及拼接的方法。例子中是以U32类型的数值进行说明的,当然,对于其它类型如U16、U64等类型的数值其处理方法与是适用的。

Labview 虚拟仪器编程实例, 第二章 虚拟仪器软件开发平台(1) 2-1:开关和指示灯.vi 2-2:对已有VI程序操作.vi 2-3:图形性控件.vi 2-4:属性节点.vi 2-5:事件驱动.vi 2-6:加减运算.vi 2-7:比较两个数.vi 2-8: 熟悉LabVIEW调试功能.vi 2-9:两点间斜率.vi 2-10:温度测量.vi 2-11:子程序的建立.vi 2-12:波形的产生改变.vi 2-13:学习调用子VI.vi 摄氏变华氏.vi 第二章 虚拟仪器软件开发平台(2) 2-14:学习使用While循环.vi 2-15:学习使用For循环.vi 2-16:求X的立方和.vi 2-17:学习使用双重循环。.vi 2-18:数字PID运算 2-19:测量温度并显示波形.vi 2-20 :随机数的显示统计.vi 2-21:随机数的匹配统计。.vi 2-22:学习使用移位寄存器.vi 2-23:温度限制点亮指示灯.vi 2-24:用CASE实现两数加减.vi 2-25:查找随机数的时间.vi 2-26:用公式节点计算.vi 2-27:四则运算.vi 2-28:用属性节点变色.vi 2-29:顺序帧.vi 第二章 虚拟仪器软件开发平台(3) 2-30:熟悉数组函数 2-31:簇-波形-图形和处理.vi 2-32:数组拆分相乘.vi 2-33:求子数组.vi 2-34:数组插值.vi 2-35:用Chart和Graph表示曲线。.vi 2-36:簇函数举例.vi 2-37:解线性方程AX=Y.vi 2-38:一维数组产生和操作.vi 2-39:数组的插入和删除.vi 2-40:获得波形数据元素.vi 2-41:对波形数据的操作.vi 2-42:画圆.vi 2-43:三维立体图.vi 2-44:字符串函数举例.vi 2-45:学习使用Format Into String函数.vi 2-46:读文件.vi 2-47:存为表格文件.vi 2-48:字符串.vi 2-49:存储数据.vi 2-50: 增加文件保存.vi 子VI:输出模拟实验数据.vi 第三章 虚拟仪器的测试信号分析处理技术 3-1:仿真信号.vi 3-2:频谱分析.vi 3-3:取自谱.vi 3-4:求取频响函数.vi 3-5:对各种函数进行计算.vi 3-6:不同的采样方式.vi 3-7:从波形数组中获取波形数据.vi 3-8:数据序列频谱分析.vi 子VI:输出模拟实验数据.vi 第五章 虚拟仪器基本软件技术 5-9:采集模拟信号.vi 5-10:采集电压信号.vi 5-11:读取电压信号.vi 5-12:采集两个电压信号.vi 5-13:多通道数据采集.vi 5-14:灵活数据采集.vi 第七章 虚拟仪器系统集成的硬件技术 7-1:发布数据.vi 7-2:客户读取.vi 7-3:TCP服务器端.vi 7-4:TC
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值