|
3#
楼主 |
发表于 2015-11-27 17:24:25
|
只看该作者
本帖最后由 roych 于 2015-11-27 17:30 编辑
忘了占楼了{:soso_e117:}
接下来,把帮白菜写的代码贴上来了:
- '十进制转二进制
- Function D2B(ByVal Dec As Long) As String
- '临时变量
- Dim s As String
-
- Do While Dec > 0
- s = Dec Mod 2 & s
- Dec = Dec \ 2
- Loop
- D2B = s
- End Function
- '二进制转十进制
- Function B2D(ByVal Bstr As String) As Long
- Dim i As Long
- Dim l As Long
- For i = 1 To Len(Bstr)
- l = l + Mid(Bstr, i, 1) * (2 ^ (Len(Bstr) - i))
- Next
- B2D = l
- End Function
- '加密
- Function Encode(ByVal strCode As String)
- Dim str
- Dim i As Long
- str = Split(strCode, "-")
- For i = 0 To UBound(str)
- str(i) = D2B(str(i))
- Next
- Encode = Join(str, "-")
- End Function
- '解密
- Function Decode(ByVal strCode As String)
- Dim str
- Dim i As Long
- str = Split(strCode, "-")
- For i = 0 To UBound(str)
- str(i) = B2D(str(i))
- Next
- Decode = Join(str, "-")
- End Function
复制代码 主要是他的代码都是“数字-数字”格式的字符串,需要进行加密和解密。当时他的算法是打算一个个数字替换,我建议不必这么麻烦,不妨分割完字符串之后,直接转二进制再连接起来,于是就写了上面这个简单点的加解密算法,可能还算不上算法吧。不过可以给初学者参考下。
另外,这里没有加入错误处理语句,需要确保输入的是正确的十进制或者二进制数字。这里只是针对数字,事实上,如果需要针对任意字符串的话,可以用ASCII编码来处理,不过这就比较复杂了,各种加密算法都会有类似于这些的转码的写法。
|
|