mglouis 当前离线
列兵
str ="你" ch=Asc(str) '加密 ch=ch Xor &HFFFF MsgBox Chr(ch) '解密 ch=ch Xor &HFFFF MsgBox Chr(ch)复制代码
评分人数
这个不叫ASCII,应该是GBK。“你”字的GBK代码点是十六进制的C4E3,即十进制50403,但是Asc函数的返回值是Integer子类型,取值范围是-32,768 到 32,767,50403大于32767,溢出,得到-15133(即50403 - 65536)。 Demon 发表于 2011-6-3 22:48
TOP
Demon 当前离线
上尉
大家不用争执啦 我知道怎么计算啦 我一直追寻那ch值 原来我查错了 “你” 的ascii值是-15133 我直接在电脑的系统工具找的是50403 忘记 汉字是负数没发现自己做错了 mglouis 发表于 2011-6-3 20:43
本来就是查手册就能解决的问题。 Demon 发表于 2011-6-3 20:08
hffff = -1 ,二进制11111111 11000000 xor 11111111 = 00111111(加密) 00111111 xor 11111111 = 11000000(解密) ps:楼上两位是来贴手册的? batman 发表于 2011-6-3 19:48
batman 当前离线
考官
荣誉版主
601997526 当前离线
六级士官
Dim MyNumber MyNumber = Asc("A") '返回 65。 MyNumber = Asc("a") '返回 97。 MyNumber = Asc("Apple") '返回 65。复制代码