中国DOS联盟论坛

中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --
联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
游客 | 登录 | 注册 | 会员 | 搜索 | 中国DOS联盟
中国DOS联盟论坛
现在时间是 2026-08-24 17:59
47,812 主题排行 / 349,910 发帖 / 今日 1 篇 / 48,262 会员排行
WinPE、PowerShell及其它命令行系统专区 » 请教,序列号的计算问题?
可打印版本  2,660 / 4
第1楼 donpps 发表于 2006-12-30 07:40
初级用户 发帖 20 积分 56
请教,序列号的计算问题?
问题如下:
输入序列号(仅由数字和大写字母组成的字符串),先判定序列号输入是否正确,如不符要求(仅由数字和大写字母组成的字符串),返回重新输入,如符合要求,则开始计算注册码。取第1个字符的(ASCII编码)前1位的字符(如A为@,9为8),取第2个字符的(ASCII编码)前2位的字符(如A为?,9为7),取第3个字符的(ASCII编码)前4位的字符(如A为=,9为5),取第4个字符的(ASCII编码)前5位的字符(如A为<,9为4),取倒数第4个字符的(ASCII编码)前1位的字符,取倒数第3个字符的(ASCII编码)前2位的字符,取倒数第2个字符的(ASCII编码)前4位的字符,取倒数第1个字符的(ASCII编码)前5位的字符,(中间的几位字符不参与计算),组成一个8(或6,4,2)位字符的注册码。如序列号:W1D0W7M5A0J593459609490 注册号:V/@+825+
用excel作比较容易。用p处理,不知怎么搞!想用如下文本文件作查询,先以字符查acsi码,再做减法计算,再用计算结果查询字符,可惜写来写去,总写不好。或许用debug的方案还简单些。请教最优解法,谢谢。
+ 43
, 44
- 45
. 46
/ 47
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57
: 58
; 59
< 60
= 61
> 62
? 63
@ 64
A 65
B 66
C 67
D 68
E 69
F 70
G 71
H 72
I 73
J 74
K 75
L 76
M 77
N 78
O 79
P 80
Q 81
R 82
S 83
T 84
U 85
V 86
W 87
X 88
Y 89
Z 90
第2楼 electronixtar 发表于 2006-12-30 13:24
铂金会员 发帖 2,672 积分 7,493
p处理也能算sn,顶~
第3楼 tigerpower 发表于 2006-12-31 12:46
中级用户 发帖 99 积分 377
使用 mawk :


C:\>mawk "BEGIN{for(k=43;k<=90;k++){m=sprintf(\"%c\",k);n2i=k};for(i=1;i==1;){printf \"\nPlease enter the SN: \";getline;if(length($0)<8){print \"SN must more than 8 characters\";continue};for(j=1;j<=length($0);j++){if (substr($0,j,1)!~//){print \"All characters must in !!!\";break}};if (j>length($0)){i=0}};key_gen(0,-1);key_gen(1,-2);key_gen(2,-4);key_gen(3,-5);key_gen(-4,-1);key_gen(-3,-2);key_gen(-2,-4);key_gen(-1,-5);print \"The KEY is: \" key};function key_gen(p,q){key=sprintf(\"%s%c\",key,n2i+q)}"



更多命令行工具,请到本论坛的
WinPE、PowerShell板块(点击进入)


第4楼 lxmxn 发表于 2007-05-10 01:34
版主 发帖 4,938 积分 11,386
tigerpower 真乃牛人,Orz
第5楼 dqls889 发表于 2007-05-17 00:18
初级用户 发帖 36 积分 68
一个字,牛人
[ 联系联盟系统管理团队 - 中国DOS联盟 - 标准版 ]
Sponsored by ifanr Inc | © 2001–2023