- 1、本文档共34页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第二章、字节集
字节集是易语言独有的基本数据类型,按字面的意思来理解,所谓“字节集”就是“字节的集合”,其本质就是字节数组。从计算机基础知识中,我们知道,一个字节就是8位(bit),也就是8个“0”或“1”。计算机中所有的东西(指令和数据)都是用0和1表示的,而以字节作为保存数据的最小单位,所以,字节集可以保存任何的数据——数字、文本、声音、图像、可执行文件等等;反过来,一段字节集数据具体表示什么,关键看你是如何解读它——你可以认为它是一段文本、一张图片或是一首mp3中的一段。
易语言的核心支持库提供了很多字节集相关的函数(2-a),这些函数使得我们对字节集的处理异常方便。我们先来看看易语言本身对这些函数的简要介绍。
字节集操作命令 简要说明 取字节集长度 取字节集型数据的长度。 到字节集 将指定数据转换为字节集后返回转换结果。 取字节集数据 取出字节集中指定位置指定数据类型的数据。 取字节集左边 返回一个字节集,其中包含指定字节集中从左边算起指定数量的字节。 取字节集右边 返回一个字节集,其中包含指定字节集中从右边算起指定数量的字节。 取字节集中间 返回一个字节集,其中包含指定字节集中从指定位置算起指定数量的字节。 寻找字节集 返回一字节集在另一字节集中最先出现的位置,位置值从 1 开始。如果未找到,返回 -1。 倒找字节集 返回一字节集在另一字节集中最后出现的位置,位置值从 1 开始。如果未找到,返回 -1。 字节集替换 将指定字节集的某一部分用其它的字节集替换,然后返回替换后的结果。 子字节集替换 返回一个字节集,该字节集中指定的子字节集已被替换成另一子字节集,并且替换发生的次数也是被指定的。 取空白字节集 返回具有特定数目 0 字节的字节集。 取重复字节集 返回一个字节集,其中包含指定次数的字节集重复结果。 分割字节集 将指定字节集进行分割,返回分割后的一维字节集数组。 指针到字节集 返回指定内存指针所指向地址处的一段数据,注意调用本命令前一定要确保所提供的内存地址段真实有效。本命令的最佳使用场合就是在易语言回调子程序和易语言DLL公开子程序用作获取外部数据。
这些函数的使用都很简单,但有些函数依然会使人迷惑,或者想更深入地了解其中的相关细节。所以我们先围绕某些函数作一点深入的讨论。
2.1 深入讨论字节集相关函数
2.1.1 取字节集长度
首先我们来研究一下“取字节集长度”函数是如何取得一个字节集长度的,因为它的效率决定了我们是否适合把它放在循环体中执行。系统要计算一段字节集的长度,不外乎有两个方法:① 逐一累计,也就是把字节一个一个地数出来。 ② 把字节集的长度存放在某个特殊的地方,需要的时候读取出来,在字节集操作的过程中即时更新该长度数据。系统具体采用的是哪一种方法,我们作一个简单的测验便知。
新建一个易语言程序,在窗体上放一个按钮,为该按钮写如下代码:
.版本 2
.子程序 _按钮测试计算方式_被单击
.局部变量 数据, 字节集
.局部变量 上次时间
数据 = 取空白字节集 (1) 字节集的长度不论是1还是1000000,计算的时间不变
上次时间 = 取启动时间 ()
.计次循环首 (1000000, )
取字节集长度 (数据)
.计次循环尾 ()
输出调试文本 (取启动时间 () - 上次时间)
这段代码先分配一定长度的字节集数据,然后执行“取字节集长度”函数一百万次,我的机器测得所花的时间是31毫秒左右。如果你的机器速度很快,测得的时间是0毫秒,请将循环次数增加。然后我把字节集数据的长度改为1000000,再次运行该程序,测得的结果依然大约是31毫秒。由此可见,易语言的“取字节集长度”函数并不是蠢蠢地一个一个字节字节地数,而是把字节集的长度存放在了某个特殊的地方,需要的时候就把它读出来。那么具体存放在何处呢? 这也有几种可能:① 存放在字节集的开始处。② 存放在字节集的末尾处。 ③ 存放在字节集开始处更前面的位置。 ④ 存放在内存堆栈中的某个表中,然后与指定的字节集变量建立联系。很显然,存放在字节集末尾的可能性很小,不然系统如何知道一段字节集到何处结束?而如果存放在内存中的表中,需要进行额外的查表操作,显得过于烦琐,
我们先来测试简单的,这也需要做试验。首先我们需要获得字节集数据的内存地址,这个我们可以通过“取变量地址”函数获得——就像第一章中“自定义数据类型的内存存储”一节中那样,如果不太清楚,请先转回去看那一节。不过字节集的变量地址更简单——我们只用取字节集的第一个元素的地址就得到了,不用转来转去那么麻烦。得到地址之后,我们就看该地址的第一个整数型数据是否是字节集的长度,如果不是,那显然没有把长度信息放在开头;如果不在开头,我们再把地址指针向内存
您可能关注的文档
- 1.1二阶及三阶行列式.pdf
- 1.1-集合基本概念(离散数学).ppt
- 1.1集合映射及函数--1.ppt
- 1.1计算机解决问题过程——韩信点兵.ppt
- 1.1线性空间和其子空间.ppt
- 1.2 MATLAB中数组和矩阵运算.ppt
- 1.2 矩阵运算.ppt
- 操作系统第2节第二节.ppt
- 操作系统课件 chapter 2 (用户接口与作业管理).pdf
- 操作系统内核内存分配算法的分析及性能评价.pdf
- 2025年市总工会党组书记、市委组织部部长生活会“四个带头”个人对照检查发言材料2篇(含上年度整改+个人情况、个人事项+典型案例).docx
- 2025年部编版小学六年级下册《道德与法治》第四单元 让世界更美好第10课 我们爱和平教学课件.pptx
- 公司领导班子2025年围绕“四个带头”主题检视问题整改落实方案与组织生活会批评意见(20条)2篇文.docx
- 教育系统党组班子2025年对照“四个带头”含意识形态、以典型案例举一反三解析检视材料【2篇文】.docx
- 2025年国有企业领导班子、学校副校长生活会“四个带头”方面对照个人检视发言材料2篇文(附:上年度整改情况、典型案例解析).docx
- 2025年生活会“四个带头”个人对照检查材料2篇文(含对其他领导批评意见,个人公开事项申报、意识形态).docx
- 2025年国有企业党委书记、领导班子生活会“四个带头”方面对照检查发言材料2篇文(上年度整改情况).docx
- 乡镇领导班子、市委组织部常务副部长2025年对照“四个带头”含违纪行为为典型案例的剖析与反思检视剖析材料{2篇文}.docx
- 市委社会工作部2025年生活会领导班子对照检视发言材料2篇文(含以案为鉴,深刻反思存在问题、反面典型案例举一反三解析、其他需要说明情况).docx
- 2025年民主生活会、组织生活会批评意见(20条)与市直单位领导班子“四个带头”对照检查材料【含上年度查摆问题整改落实情况】2篇文.docx
文档评论(0)