|
发表于 2015-1-15 13:44
|
显示全部楼层
本楼为最佳答案
代码又做了改进,随机计算只需前3位,然后判断第4位是否符合即可。
这样的计算效率更高。- Function f(x, Optional k = 0)
- Application.Volatile
- If k Then
- If k = 1 Then
- x = "&H" & x: y = x Mod "&HC" + "&HC" * "&H19"
- Else
- For j = 1 To 4
- y = y + Asc(Mid(x, j, 1))
- Next
- End If
- f = Hex(y): Exit Function
- End If
-
- x = "&H" & x: y = x Mod "&HC" + "&HC" * "&H19"
- s = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"
- f = "09AZ"
- Do
- h = y
- For j = 1 To 3
- r = Int(Rnd * 36): Mid(f, j, 1) = Mid(s, r + 1, 1)
- h = h - r - IIf(r < 10, 48, 55)
- Next
- If 48 <= h And h <= 57 Then Mid(f, j, 1) = h - 48: Exit Do
- If 65 <= h And h <= 90 Then Mid(f, j, 1) = Chr(h): Exit Do
- Loop
- End Function
复制代码 |
|