- UID
- 34331
注册时间2007-8-14
阅读权限50
最后登录1970-1-1
感悟天道
TA的每日心情 | 开心 3 天前 |
---|
签到天数: 1992 天 [LV.Master]伴坛终老
|
今天看了PhoXo的算法分析,写注册机出了问题,不能将十六进制转换为字符
要将图“真注册码”"-"后的十六进制转换为字符,才是真注册码
5770775374转换为字符为WpwSt,真码为78855-WpwSt
请高手指点:怎样在程序中实现转换
注册算法的方式为:
读入注册名和注册码,注册码的长度应该为11位,且第6位必须为‘-’字符即是:
将:【注册码第 7位的ASCII值 - 注册码第1位的ASCII值 + $30】的结果 重新写回 注册码的第1位;
将:【注册码第 8位的ASCII值 - 注册码第2位的ASCII值 + $30】的结果 重新写回 注册码的第2位;
将:【注册码第 9位的ASCII值 - 注册码第3位的ASCII值 + $30】的结果 重新写回 注册码的第3位;
将:【注册码第10位的ASCII值 + 注册码第4位的ASCII值 - $30】的结果 重新写回 注册码的第4位;
将:【注册码第11位的ASCII值 - 注册码第5位的ASCII值 + $30】的结果 重新写回 注册码的第5位;
易语言源码
.版本 2
.局部变量 i, 整数型
.局部变量 name, 文本型
.局部变量 name_len, 整数型
.局部变量 regname, 文本型
.局部变量 table, 文本型
.局部变量 ma, 文本型
.局部变量 a, 字节型
.局部变量 b, 字节型
.局部变量 ma1, 整数型
.局部变量 ma2, 整数型
.局部变量 c, 整数型
name = 编辑框1.内容
name_len = 取文本长度 (编辑框1.内容)
table = “PhoXo”
.如果 (name_len = 11)
i = i + 1
.判断循环首 (i ≤ 5)
a = 取代码 (name, i)
b = 取代码 (table, i)
.如果 (i = 4)
ma1 = 到数值 (b) + 48 - 到数值 (a)
.否则
ma1 = 到数值 (b) - 48 + 到数值 (a)
.如果结束
ma = 到文本 (ma) + 到文本 (取十六进制文本 (ma1))
i = i + 1
.判断循环尾 ()
regname = 取文本左边 (name, 5) + “-” + 到文本 (ma)
编辑框2.内容 = regname
.否则
信息框 (“请输入11位数注册码!”, 0, “友好提示”) |
|