02_第二章、字节集

02_第二章、字节集

ID:14150654

大小:369.50 KB

页数:47页

时间:2018-07-26

02_第二章、字节集_第1页
02_第二章、字节集_第2页
02_第二章、字节集_第3页
02_第二章、字节集_第4页
02_第二章、字节集_第5页
资源描述:

《02_第二章、字节集》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、第二章、字节集字节集是易语言独有的基本数据类型,按字面的意思来理解,所谓“字节集”就是“字节的集合”,其本质就是字节数组。从计算机基础知识中,我们知道,一个字节就是8位(bit),也就是8个“0”或“1”。计算机中所有的东西(指令和数据)都是用0和1表示的,而以字节作为保存数据的最小单位,所以,字节集可以保存任何的数据——数字、文本、声音、图像、可执行文件等等;反过来,一段字节集数据具体表示什么,关键看你是如何解读它——你可以认为它是一段文本、一张图片或是一首mp3中的一段。易语言的核心支持库提供了很多字节集相关的函数(2-a),这些函数使得我们对字节集的处理异常方

2、便。我们先来看看易语言本身对这些函数的简要介绍。字节集操作命令简要说明取字节集长度取字节集型数据的长度。到字节集将指定数据转换为字节集后返回转换结果。取字节集数据取出字节集中指定位置指定数据类型的数据。取字节集左边返回一个字节集,其中包含指定字节集中从左边算起指定数量的字节。取字节集右边返回一个字节集,其中包含指定字节集中从右边算起指定数量的字节。取字节集中间返回一个字节集,其中包含指定字节集中从指定位置算起指定数量的字节。寻找字节集返回一字节集在另一字节集中最先出现的位置,位置值从1开始。如果未找到,返回-1。倒找字节集返回一字节集在另一字节集中最后出现的位置,位

3、置值从1开始。如果未找到,返回-1。字节集替换将指定字节集的某一部分用其它的字节集替换,然后返回替换后的结果。子字节集替换返回一个字节集,该字节集中指定的子字节集已被替换成另一子字节集,并且替换发生的次数也是被指定的。取空白字节集返回具有特定数目0字节的字节集。取重复字节集返回一个字节集,其中包含指定次数的字节集重复结果。分割字节集将指定字节集进行分割,返回分割后的一维字节集数组。指针到字节集返回指定内存指针所指向地址处的一段数据,注意调用本命令前一定要确保所提供的内存地址段真实有效。本命令的最佳使用场合就是在易语言回调子程序和易语言DLL公开子程序用作获取外部数据

4、。这些函数的使用都很简单,但有些函数依然会使人迷惑,或者想更深入地了解其中的相关细节。所以我们先围绕某些函数作一点深入的讨论。1212.1深入讨论字节集相关函数2.1.1取字节集长度首先我们来研究一下“取字节集长度”函数是如何取得一个字节集长度的,因为它的效率决定了我们是否适合把它放在循环体中执行。系统要计算一段字节集的长度,不外乎有两个方法:①逐一累计,也就是把字节一个一个地数出来。②把字节集的长度存放在某个特殊的地方,需要的时候读取出来,在字节集操作的过程中即时更新该长度数据。系统具体采用的是哪一种方法,我们作一个简单的测验便知。新建一个易语言程序,在窗体上放一

5、个按钮,为该按钮写如下代码:.版本2.子程序_按钮测试计算方式_被单击.局部变量数据,字节集.局部变量上次时间数据=取空白字节集(1)'字节集的长度不论是1还是1000000,计算的时间不变上次时间=取启动时间().计次循环首(1000000,)取字节集长度(数据).计次循环尾()输出调试文本(取启动时间()-上次时间)这段代码先分配一定长度的字节集数据,然后执行“取字节集长度”函数一百万次,我的机器测得所花的时间是31毫秒左右。如果你的机器速度很快,测得的时间是0毫秒,请将循环次数增加。然后我把字节集数据的长度改为1000000,再次运行该程序,测得的结果依然大约

6、是31毫秒。由此可见,易语言的“取字节集长度”函数并不是蠢蠢地一个一个字节字节地数,而是把字节集的长度存放在了某个特殊的地方,需要的时候就把它读出来。那么具体存放在何处呢?这也有几种可能:①存放在字节集的开始处。②存放在字节集的末尾处。③存放在字节集开始处更前面的位置。④121存放在内存堆栈中的某个表中,然后与指定的字节集变量建立联系。很显然,存放在字节集末尾的可能性很小,不然系统如何知道一段字节集到何处结束?而如果存放在内存中的表中,需要进行额外的查表操作,显得过于烦琐,我们先来测试简单的,这也需要做试验。首先我们需要获得字节集数据的内存地址,这个我们可以通过“取

7、变量地址”函数获得——就像第一章中“自定义数据类型的内存存储”一节中那样,如果不太清楚,请先转回去看那一节。不过字节集的变量地址更简单——我们只用取字节集的第一个元素的地址就得到了,不用转来转去那么麻烦。得到地址之后,我们就看该地址的第一个整数型数据是否是字节集的长度,如果不是,那显然没有把长度信息放在开头;如果不在开头,我们再把地址指针向内存的低地址方向移动一个整数长度,也就是4个字节,我猜想长度信息也有可能存放在那里。具体的试验代码如下:.版本2.支持库spec.子程序_按钮存储位置_被单击.局部变量数据,字节集.局部变量地址,整数型.局部变量临时地址,整数

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。