我们通过强制转换函数和平化字符串操作实现了字符与ASCII之间的相互转化,其实这两个函数可以实现许多更为复杂的功能,我们知道一个字(16位系统)是由两个连续存储的字节构成的,提取高低位字节实际上是对内存的操作,而这两个函数恰恰是内存存储相关的函数。

      LV本身提供了字的拆分函数,我们先看看LV内置拆分函数的用法:

Picture
      使用强制转化函数可以把字转换成一个U8数组或者由两个I8元素构成的簇,从中就可以分解出高位字节和低位字节。
Picture
      需要特别注意的是返回数组的第0个元素为高位字节,第一个元素为低位字节,对于不同的操作系统,可能是不同的,这就是所谓的数据大小端的问题,平化字符串函数可以看得更为清楚。使用强制转换函数同样可以实现。
Picture
下面通过平化字符串函数提取字的高低字节。
Picture
      转化为字符串后,我们可以清晰地看到,我的系统使用的是大端在前的存储方式,其它的操作系统中可能使用的是小端在前,则转换为字符串后结果应该是3421。

      我们也可以使用从字符串还原函数求取高低字节,如下图所示:

Picture
      理解强制转换函数与平化字符串函数是比较困难的,这直接涉及到LV的数据类型及其在内存中存储的问题,这同时又是极其重要的,只有深入理解了LV数据类型的存储机制,才能够有效地优化LV程序,也是CIN编程的基础。
Picture



Leave a Reply.