我们都知道两点之间最近的路径是直线,遗憾的是程序员往往走的并非直线。

目的:字符串转换为双精度数。
网友的程序框图:
Picture
分析网友的程序框图:

网友的目的是字符串转换为双精度数,从程序框图上看,他限定了字符串的格式。字符串由5个字符组成,其中整数部分2个字符,小数点1个字符,小数部分两个字符。
网友首先把字符串转换为U8数组,然后利用索引数组取出各个位,根据各位、百位、小数点后一位、小数点后两位,分别乘以10、100、0.1、0.01,然后求和。
框图中比较难理解的是除以16,求余数的操作,他的目的把ASCII转换为数字。我们知道ASCII 0X30...0X39分别是0-9的ASCII.除以16的目的是右移4位,这样余数分别为0-9。

改进网友的程序框图:
网友的程序框图虽然比较复杂,但是还是有借鉴意义的,这里面实际上给出了字符串表示的数字转换为各个位组成数组的方法,我们可以更为简单的方法实现同样的功能。以整型数为例。
 
Picture
在LABVIEW中,类似功能最常见的方法是U8数组减去0X30,这样直接得到各个位构成的数组。即便使用网友的方法,也可以用求余数函数对数组进行整体运算。这是LABVIEW数组有别于C语言数组的一个重要特点,在C语言中是不允许对数组进行整体运算操作的。

推荐解决方法:
LABVIEW是面向工程应用的编程语言,对于基本的编程需要,肯定是提供相应的函数的,而且远比其它编程语言方便得多,充分体现了LABVIEW易于使用的特点。对于字符串转换双精度数,在字符串函数选板中,至少提供了三个函数可以完成这样的转换功能,见下图。

Picture

 


baochuan007
04/09/2011 10:20

CS大哥,为什么格式化字符串第二篇无法链接网络呢?其他的都正常,能给弄下吗,谢谢

本章图片下第一行俩字(厂家)写错啦,应该是(常见)哈

Reply
labview7i
04/09/2011 19:12

非常感谢你的指正!

已更正!

Reply



Leave a Reply.