28,391
社区成员
发帖
与我相关
我的任务
分享
Private function toByte(Str)
Dim i,iCode,c,iLow,iHigh
toByte = ""
For i=1 To Len(Str)
c = mid(Str,i,1)
iCode = Asc(c) ' 取得表示字符 c 的字节序列的整数值
' Asc取值时,是当作有符号数取的, 在多字节字符中,因为高位是1开头,所以出现负数的情况,+上 65535 是为了修正数值
If iCode <0 Then iCode = iCode + 65535//这里判断icode大小是什么意思?为啥要和255比较加上的65535是什么?
If iCode>255 Then
' 当值大于 255, 需要取高低位处理为2个字节表示, 因为 vbs在位运算上的不足,这里借助字符串切割来完成
iLow = Left(Hex(Asc(c)),2) ' 转为16进制字符串,再截取前两位
iHigh =Right(Hex(Asc(c)),2) ' 转为16进制字符串,再截取后两位
toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
Else
toByte = toByte & chrB(AscB(c))
End If
Next
End function