将asc转换为十六进制即可,位数统一,还可以忽略负号。
Function GenerateCode(strText)
'输入字符串(strText),返回十六进制ANSI编码
Dim i
For i=1 to Len(strText)
GenerateCode = GenerateCode & Hex(Asc(Mid(strText,i,1)))
Next
End Function
Function GetText(strCode)
'输入十六进制ANSI编码(strCode),返回字符串原文
Dim i,strTmp
For i=1 to Len(strCode) Step 2
strTmp = "&h" & Mid(strCode,i,2)
If CInt(strTmp)<128 Then
GetText = GetText & Chr(strTmp)
Else
i = i + 2
GetText = GetText & Chr(strTmp & Mid(strCode,i,2))
End If
Next
End Function
这是我自己加密字符串用的。符合你的要求,密文为十六进制无分隔符的连续字符串,ASCII字符(0-127)转换为2位,其它ANSI字符(256-65535)转换为4位。
此算法是本着平衡 [加密/解密的代码量] 与 [密文长度] 为宗旨编写的。
不知道你加密想要干什么,但我还是建议你:
不要想着进一步通过运算等方式“加密”,因为在vbs下解密算法是明文,一切加密在懂行者看来都是没意义的。在我看来,vbs的加密充其量也就是稍微隐藏下字符串或代码,不被人一眼就看到意图而已。所以说,我这个算法就够用了。
如果想进一步隐藏代码,可以自己百度[ Scripting.Encoder ]。不出意外的,这个也可以被解密。
代码中有不懂的地方可以追问。
直接数位用零补齐不就行了。速度快,简便易行,全部数字都补齐到最长位。
读取的时候直接按位数严格读就行了。
具体代码很简单。用string函数就行了。
你是不是要按位数读取出ASCII码然后Chr它?