下面我们就Labview编程中字符串转换为双精度数问题进行详细分析:
大家都知道两点之间最近的路径是直线,遗憾的是程序员往往走的并非直线。
这是用户的程序框图:
分析用户的程序框图:
用户的目的是字符串转换为双精度数,从程序框图上看,他限定了字符串的格式。字符串由5个字符组成,其中整数部分2个字符,小数点1个字符,小数部分两个字符。
用户首先把字符串转换为U8数组,然后利用索引数组取出各个位,根据各位、百位、小数点后一位、小数点后两位,分别乘以10、100、0.1、0.01,然后求和。
框图中比较难理解的是除以16,求余数的操作,他的目的把ASCII转换为数字。我们知道ASCII0X30...0X39分别是0-9的ASCII.除以16的目的是右移4位,这样余数分别为0-9。
改进用户的程序框图:
用户的程序框图虽然比较复杂,但是还是有借鉴意义的,这里面实际上给出了字符串表示的数字转换为各个位组成数组的方法,我们可以更为简单的方法实现同样的功能。以整型数为例。
在LABVIEW中,类似功能最厂家的方法是U8数组减去0X30,这样直接得到各个位构成的数组。即便使用网友的方法,也可以用求余数函数对数组进行整体运算。这是LABVIEW数组有别于C语言数组的一个重要特点,在C语言中是不允许对数组进行整体运算操作的。
推荐解决方法:
LABVIEW是面向工程应用的编程语言,对于基本的编程需要,肯定是提供相应的函数的,而且远比其它编程语言方便得多,充分体现了LABVIEW易于使用的特点。对于字符串转换双精度数,在字符串函数选板中,至少提供了三个函数可以完成这样的转换功能,见下图。