开启辅助访问 切换到宽版

精易论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

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

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


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

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

楼主: jr21066
收起左侧

[已回应] 编码_URL编码_快速

[复制链接]
结帖率:100% (11/11)
 楼主| 发表于 2018-9-4 12:25:22 | 显示全部楼层   陕西省渭南市
今天统一补上注释.汇编没留源格式真的失败啊.

  
子程序名返回值类型公开备 注
汇编URL全编码  
参数名类 型参考可空数组备 注
局_表整数型
局_目标地址整数型
局_转换内容长度整数型
局_转换内容文本型
置入代码 ({ 139, 93, 8, 139, 125, 12, 139, 77, 16, 139, 117, 20, 139, 54, 176, 37, 170, 172, 138, 224, 192, 232, 4, 215, 170, 138, 196, 36, 15, 215, 170, 226, 237, 51, 192, 170, 201, 194, 16, 0 })
' mov ebx,dword ptr [ebp+08h]  取转换表地址
' mov edi,dword ptr [ebp+0Ch]  返回数值地址
' mov ecx,dword ptr [ebp+10h]  取长度
' mov esi,dword ptr [ebp+14h]  源文本
' mov esi,dword ptr [esi]
' Label1:
' mov al,25h  写入%
' stosb
' lodsb
' mov ah,al
' shr al,04h   取表索引值
' xlatb     取表项值
' stosb   保存转换内容
' mov al,ah
' and al,0Fh  处理高位
' xlatb
' stosb
' loop Label1  循环处理
' xor eax,eax  写入文本结束标志
' stosb
' leave
' retn 0010h
子程序名返回值类型公开备 注
汇编URL半编码  
参数名类 型参考可空数组备 注
局_表整数型
局_表2整数型
局_目标地址整数型
局_转换内容长度整数型
局_转换内容文本型
置入代码 ({ 96, 139, 125, 16, 139, 77, 20, 139, 117, 24, 139, 54, 172, 81, 87, 185, 75, 0, 0, 0, 139, 125, 12, 242, 174, 95, 89, 116, 20, 80, 176, 37, 170, 88, 138, 224, 192, 232, 4, 139, 93, 8, 215, 170, 138, 196, 36, 15, 215, 170, 226, 216, 51, 192, 170, 97, 201, 194, 20, 0 })
' pushad  代码长时记不清使用了哪些寄存器.不如全保存好了
' mov edi,dword ptr [ebp+10h]  取转换内容表地址
' mov ecx,dword ptr [ebp+14h]   取URL编码字符表地址
' mov esi,dword ptr [ebp+18h]   取长度
' mov esi,dword ptr [esi]     转换内容
' Label2:
' lodsb
' push ecx
' push edi
' mov ecx,0000004Bh
' mov edi,dword ptr [ebp+0Ch]
' repne scasb   判断是否是编码表中的字符内容
' pop edi
' pop ecx
' je Label1  如果是字符,跳过
' push eax
' mov al,25h  保存%符号
' stosb
' pop eax
' mov ah,al
' shr al,04h
' mov ebx,dword ptr [ebp+08h]
' xlatb   取表索引对应内容
' stosb
' mov al,ah
' and al,0Fh
' xlatb   取高位表项内容
' Label1:
' stosb
' loop Label2
' xor eax,eax
' stosb   写文本结束标记
' popad
' leave
' retn 0014h
子程序名返回值类型公开备 注
编码_URL编码_快速文本型 快速URL编码
参数名类 型参考可空数组备 注
参_编码文本文本型需要URL编码的文本内容
参_是否不编码字母数字逻辑型不编码字母数字及符号
变量名类 型静态数组备 注
局_表1文本型 
局_返回值文本型 
局_待转换文本文本型 
局_表2文本型 
' 二进制数快速对应表内容.实现快速转换
局_表1 = “0123456789ABCDEF”
' URL编码中字符内容
局_表2 = “0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ;/?:@&=+$,#.-”
' 预申请返回内容空间
局_返回值 = 取空白文本 (取文本长度 (参_编码文本) × 3)
' 汇编代码短小快,难控制.所以为了稳定和更有效,把代码分成了两部分,方便维护和提高效率.
如果 (参_是否不编码字母数字 = )
汇编URL半编码 (取变量数据地址_文本 (局_表1), 取变量数据地址_文本 (局_表2), 取变量数据地址_文本 (局_返回值), 取文本长度 (参_编码文本), 参_编码文本)
汇编URL全编码 (取变量数据地址_文本 (局_表1), 取变量数据地址_文本 (局_返回值), 取文本长度 (参_编码文本), 参_编码文本)
返回 (局_返回值)

回复 支持 反对

使用道具 举报

结帖率:27% (7/26)

签到天数: 2 天

发表于 2018-9-1 19:13:44 | 显示全部楼层   四川省广元市
这种汇编 没必要   应该不会  采纳的  ,  感觉也不会太实用
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 26 天

 楼主| 发表于 2018-9-1 17:52:16 | 显示全部楼层   陕西省渭南市
这就是用户名 发表于 2018-9-1 17:48
不支持utf8的应该不会采用的,毕竟现在都是utf8的多

.版本 2

.局部变量 内容, 文本型

内容 = 编码_gb2312到utf8 (内容)
调试输出(编码_URL编码_快速(内容))

只是多一句话了.这样的话.编码就可以支持那些符号了.
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 26 天

 楼主| 发表于 2018-9-1 17:50:40 | 显示全部楼层   陕西省渭南市
这就是用户名 发表于 2018-9-1 17:48
不支持utf8的应该不会采用的,毕竟现在都是utf8的多

可以这样使用, 不然URL编码的一些符号都用不成了.

  
变量名类 型静态数组备 注
内容文本型 
内容 = 编码_gb2312到utf8 (内容)
调试输出 (编码_URL编码_快速 (内容))

回复 支持 反对

使用道具 举报

结帖率:100% (5/5)
发表于 2018-9-1 17:48:05 | 显示全部楼层   广西壮族自治区南宁市
不支持utf8的应该不会采用的,毕竟现在都是utf8的多
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 26 天

 楼主| 发表于 2018-9-1 17:44:55 | 显示全部楼层   陕西省渭南市

不影响.先转码再调用就可以了.
速度刚试了.还是有n倍的提升的
回复 支持 反对

使用道具 举报

结帖率:100% (34/34)

签到天数: 22 天

发表于 2018-9-1 17:30:20 | 显示全部楼层   浙江省衢州市
UTF8 用的最多
回复 支持 反对

使用道具 举报

结帖率:98% (40/41)

签到天数: 1 天

发表于 2018-9-1 17:03:59 | 显示全部楼层   广东省惠州市
支持一下,乱码了。
回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 26 天

 楼主| 发表于 2018-9-1 16:20:25 | 显示全部楼层   陕西省渭南市
这里是示例

  
内容 = “ABC.jr21066 测试文本”#换行符“//-----------// ; / ? : @ & = + $ , #”
调试输出 (编码_URL编码_快速 (内容, ))
调试输出 (编码_URL编码_快速 (内容, ))


i支持库列表   支持库注释   
spec特殊功能支持库

回复 支持 反对

使用道具 举报

结帖率:100% (11/11)

签到天数: 26 天

 楼主| 发表于 2018-9-1 16:18:50 | 显示全部楼层   陕西省渭南市
这里是调用示例

  
变量名类 型静态数组备 注
内容文本型 
内容 = “ABC.jr21066 测试文本”#换行符“//-----------// ; / ? : @ & = + $ , #”
调试输出 (编码_URL编码_快速 (内容, ))
调试输出 (编码_URL编码_快速 (内容, ))


i支持库列表   支持库注释   
spec特殊功能支持库

回复 支持 反对

使用道具 举报

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

本版积分规则 致发广告者

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

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

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