tobyte(str)化境上传源码里的一个函数不懂 求教!!

tuhuolongan 2011-02-22 11:10:54
[code=VBScrip]t
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)
If iCode<0 Then iCode = iCode + 65535//这里判断icode大小是什么意思?为啥要和255比较加上的65535是什么?
If iCode>255 Then
iLow = Left(Hex(Asc(c)),2)//还有这句 为啥要转换成十六进制呢?
iHigh =Right(Hex(Asc(c)),2)
toByte = toByte & chrB("&H"&iLow) & chrB("&H"&iHigh)
Else
toByte = toByte & chrB(AscB(c))
End If
Next
End function
[/code]
...全文
118 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
tuhuolongan 2011-02-23
  • 打赏
  • 举报
回复
呵呵 谢啦!! 说的很详细
wcwtitxu 2011-02-23
  • 打赏
  • 举报
回复


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


tuhuolongan 2011-02-23
  • 打赏
  • 举报
回复
我靠 居然一个人回答都没有 来个人啊 帮顶下也行 我好给分结贴!

28,391

社区成员

发帖
与我相关
我的任务
社区描述
ASP即Active Server Pages,是Microsoft公司开发的服务器端脚本环境。
社区管理员
  • ASP
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧