Function Key1(Str)’str--注册内容
Dim I,A ’A--生成注册码之前的数字字符串
For I = 1 To Len(Str) ’
A = A & Abs(Asc(Mid(Str,I,1)))
Next
’上面的循环是将注册内容中的所有内容转换成ANSI字符串
Do
If Len(A) > 12 Then
A = Key2(A) ’调用函数key2来缩短生成注册码之前的长度
Else
Exit Do
End If
Loop
A = Key2(A) ’再来一次,好让所有的数字都用上一遍
’通过上面的循环把字符串限定在一定的数量
Key1 = Key3(A) ’调用其他函数将数字转换成自己独有的注册码
End Function
Function Key2(Num)
Dim A,B,C
A = Mid(Num,1,6)’取字符串1-6个数字
B = Mid(Num,7,6)’取字符串6-12个数字
C = Mid(Num,13)’取字符串12以后的数字,跟函数key1种的相对应
Key2 = A \ 9 & B \ 7 & C ’缩短字符串,数字,自己随便选择一个1-9的就可以了
End Function
将数字转换成特定字符的方法有很多种,由于我自己的东西采用了我自己写的,所以,这个方法就不公布了,
生成注册码前的近乎唯一的数字字符串的方法
,电脑资料
《生成注册码前的近乎唯一的数字字符串的方法》(https://www.unjs.com)。方法很简单,给大家做个参考。
小窍门:
如果最后返回的字符串太短,我们可以通过mid何len这2个内置函数在转换的时候将最后的注册码固定成特有的长度,比如长度为1,那么len(mid(str,3,3))则返回0,这样就得到固定长度的内容了
或者用下面的函数也可以
QUOTE:
function aaa(str)
if len(str) < 12 then
for i = 1 to 12-len(str)
aaa = "0" & aaa ’或者 aaa = aaa & "0" ,这个0可以换成0-9的任意数字
next
end if
end if
或者干脆自己随便定一个长度合适的字符串填充上去