开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

用微信号发送消息登录论坛

新人指南 邀请好友注册 - 我关注人的新帖 教你赚取精币 - 每日签到


求职/招聘- 论坛接单- 开发者大厅

论坛版规 总版规 - 建议/投诉 - 应聘版主 - 精华帖总集 积分说明 - 禁言标准 - 有奖举报

查看: 2775|回复: 3
收起左侧

[闲聊] 关于字节集的应用(转)

[复制链接]

结帖率:100% (5/5)
发表于 2012-5-18 22:18:50 | 显示全部楼层 |阅读模式   山西省临汾市
按照易语言知识库的说法,“字节集是可变长的字节数组。另外,与文本数据一样,多个字节集之间也可以使用相加命令连接为一个字节集。”虽然字节集的这种特性给我们编程时带时了许多方便,但这是以牺牲性能为前提的。我在我的PII450机子上测试,执行600次2400字节的字节集相加操作竟然用了5秒多钟,不可思议。也许你会说,可以用就行了,何必管它那么多。对于我这种追求速度的人来说,这是绝对不允许的。于是我就对字节集进行了一番研究,我发现:
  易语言的字节集与VB有点相似,它在容器内存地址前四个字节位置定义了一个整数型容器,用以存储这个字节集的长度,改变这个地址的值就能改变字节集的长度。在需要进行大量字节集相加操作的时候,先定义一足够大的字节集,然后依次用api函数把要连接的字节集按顺序复制到这个字节集容器里,然后再修改字节集长度值,就相当于进行了字节集的相加。用这样的方法,进行前面的测试用时不到0.01秒。

  复制内存的api函数是:

Dll命令:CopyMemory
Dll库文件名:kernel32.dll
在Dll库中的命令名:RtlMoveMemory
参数:目标地址        数据类型:整数型
参数:源地址        数据类型:整数型
参数:字节长度        数据类型:整数型


  我自己做了一个修改字节集长度的子程序:

子程序:重定义字节集长度

参数:字节集地址        数据类型:整数型
参数:重定义长度        数据类型:整数型

CopyMemory        (字节集地址        -        4,        取地址        (重定义长度),        4)




  以及一个进行相加操作的子程序:

子程序:替换子字节集

参数:目标字节集地址        数据类型:整数型
参数:源字节集地址        数据类型:整数型
参数:复制数据长度        数据类型:整数型

CopyMemory        (目标字节集地址,        源字节集地址,        复制数据长度)



使用方法如:

替换子字节集        (取地址        (缓存2),        取地址        (缓存1),        取字节集长度        (缓存1))
重定义字节集长度        (取地址        (缓存2),        取字节集长度        (缓存1))




以上所云种种,各位有用就拿去,没用请捧捧场 。



上面转来的 我觉得    写软件的 高手们  不知道你们对 易语言 核心支持库里的 东西了解多少   
我个人认为       我自己对核心支持库里的  好多东西都没有熟悉掌握
比如核心支持库里的  字节集操作  控制台操作  环境存储 对象 变体型  变体类型等等       基础 都不明白  
  要学习的路还是很长的
精易模块里的   只取字母  只取汉字 等等    还是要有很多 我感觉对我来说  还是很有深度的


结帖率:100% (4/4)

签到天数: 1 天

发表于 2012-5-19 18:39:46 | 显示全部楼层   江西省南昌市
嗯 进来学习了
回复 支持 反对

使用道具 举报

结帖率:0% (0/2)
发表于 2012-8-24 22:16:17 | 显示全部楼层   山西省大同市
哇,遇上高人了。
回复 支持 反对

使用道具 举报

结帖率:100% (9/9)
发表于 2013-2-16 12:47:05 | 显示全部楼层   河南省开封市
那么在易语言中是否可以实现在知道某一段字节集时 利用内存搜索固定到含有这段字节集的地址呢?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则 致发广告者

发布主题 收藏帖子 返回列表

sitemap| 易语言源码| 易语言教程| 易语言论坛| 易语言模块| 手机版| 广告投放| 精易论坛
拒绝任何人以任何形式在本论坛发表与中华人民共和国法律相抵触的言论,本站内容均为会员发表,并不代表精易立场!
论坛帖子内容仅用于技术交流学习和研究的目的,严禁用于非法目的,否则造成一切后果自负!如帖子内容侵害到你的权益,请联系我们!
防范网络诈骗,远离网络犯罪 违法和不良信息举报电话0663-3422125,QQ: 793400750,邮箱:wp@125.la
Powered by Discuz! X3.4 揭阳市揭东区精易科技有限公司 ( 粤ICP备12094385号-1) 粤公网安备 44522102000125 增值电信业务经营许可证 粤B2-20192173

快速回复 返回顶部 返回列表