易语言 怎样将十六进制转换为字符
今天看了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, “友好提示”) 易语言中的基本数据类型有6种,包括数值型、逻辑型、日期时间型、文本型、字节集型、子程序指针型。
而易语言中常用的数据类型间的转换的命令有:
“到数值()”,“到文本()”,“到字节集()”,“从字节集转换()”,“到时间()”。其中的“到字节集()”命令,用来将一个通用型数据转换到字节集型。而“从字节集转换()”命令,用来将一个字节集型的数据转换成通用型数据。
在易语言知识库两周年版本中,没有搜索到“从字节集转换()”命令。不过有“取字节集数据(字节集 欲取出其中数据的字节集,整数型 欲取出数据的类型,[整数型 起始索引位置])” 看不明白,说详细点OK
页:
[1]