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