请用伪代码描述下
发布网友
发布时间:2022-05-22 04:05
我来回答
共1个回答
热心网友
时间:2024-03-06 08:40
Function MyUrlDecodeGB(code)
Dim codeh, codel
codeh = CInt("&h" & Mid(code, 2, 2))
codel = CInt("&h" & Right(code, 2))
MyUrlDecodeGB = Chr(codeh * &h100 + codel)
End Function
是一个函数。这个函数是用来把一个什么代码转换成“国标”码字符。codeh是高位码,取自源代码的第二位和第三位;codel是低位码,取自源代码右边两位。据此猜测,源代码是5位字符串形式的十六进制码。codeh * &h100 + codel就是将高位码和低位码在合成数值;然后通过chr函数转换成字符。
Function MyUrlDecodeUtf8(code)
Dim ucode1, ucode2, ucode3, codeh, codel
ucode1 = CInt("&h" & Mid(code, 2, 2)) - &hE0
ucode2 = CInt("&h" & Mid(code, 5, 2)) - &h80
ucode3 = CInt("&h" & Right(code, 2)) - &h80
codeh = (ucode1 * &h10) + int(ucode2 / &h4)
codel = ((ucode2 mod 4) * &h40) + ucode3
MyUrlDecodeUtf8 = Chrw(codeh * 256 + codel)
你少了函数结束语句。
大致和第一函数是一样的。只是原代码不是5位,而是8位。其中第二、三位为ucode1,第五六位为ucode2,第七八位为ucode3,然后在将这三个代码合成高位码和低位码,最后在转换成字符。
补充:
&H,在这里是十六进制数据的前缀,表示气候的是十六进制数据。
CInt本来是对于各非整数进行取整的函数,用在这里只是用来吧一个十六进制数转换成十进制数据。
例如:codel = CInt("&h" & Right(code, 2))
Right(code, 2)就是取得code字符串的右边两个字符;
"&h" & Right(code, 2)就是给这两个字符前加上&H成为十六进制数据
CInt("&h" & Right(code, 2))把上面的十六进制数据转换成十进制数据
codel = CInt("&h" & Right(code, 2))把这个十进制数写入codel
下面大部分都是这个意思。
- &hE0,减去十六进制数E0;
/ &h4,除以十六进制数4;
MyUrlDecodeGB = Chr(codeh * &h100 + codel)
高位代码codeh乘以十六进制数100(就是十进制的256)再加上低位码,通过chr函数转换成汉字,并写入MyUrlDecodeGB一边函数返回;
MyUrlDecodeUtf8 = Chrw(codeh * 256 + codel)
同上,只是使用的字符函数不同。