求下面这段代码的解释,感激不尽!
functionchangename(binarystr)fori=0tolenb(binarystr)-1temp=midb(binarystr,i+1,1)ifasc...
function changename(binarystr)
for i = 0 to lenb(binarystr) - 1
temp = midb(binarystr,i+1,1)
if ascb(temp)>127 then
changename = changename&chr(ascw(midb(binarystr,i+2,1)&temp))
i = i + 1
else
changename = changename&chr(ascb(temp))
end if
next
end function 展开
for i = 0 to lenb(binarystr) - 1
temp = midb(binarystr,i+1,1)
if ascb(temp)>127 then
changename = changename&chr(ascw(midb(binarystr,i+2,1)&temp))
i = i + 1
else
changename = changename&chr(ascb(temp))
end if
next
end function 展开
3个回答
展开全部
这个函数只是把字符串拆散之后又组合起来,而且在出现双字节字时的组装好像搞反了
changename = changename&chr(ascw(midb(binarystr,i+2,1)&temp))
是否应该是:
changename = changename&chr(temp&ascw(midb(binarystr,i+2,1)))
难道是故意这样利用双字节字来加密吗?
解释:
function changename(binarystr)
for i = 0 to lenb(binarystr) - 1 // 从头到尾逐个取出字符串字符到 temp
temp = midb(binarystr,i+1,1)
if ascb(temp)>127 then // 假如是双字节字(如汉字等),再取一个字符
changename = changename&chr(ascw(midb(binarystr,i+2,1)&temp))
i = i + 1 // 字符转换为ASC码,再转换为字符加到结果中
else
changename = changename&chr(ascb(temp)) // 单字节字符加入
end if
next
end function
changename = changename&chr(ascw(midb(binarystr,i+2,1)&temp))
是否应该是:
changename = changename&chr(temp&ascw(midb(binarystr,i+2,1)))
难道是故意这样利用双字节字来加密吗?
解释:
function changename(binarystr)
for i = 0 to lenb(binarystr) - 1 // 从头到尾逐个取出字符串字符到 temp
temp = midb(binarystr,i+1,1)
if ascb(temp)>127 then // 假如是双字节字(如汉字等),再取一个字符
changename = changename&chr(ascw(midb(binarystr,i+2,1)&temp))
i = i + 1 // 字符转换为ASC码,再转换为字符加到结果中
else
changename = changename&chr(ascb(temp)) // 单字节字符加入
end if
next
end function
更多追问追答
追问
可以详细解释下lenb()、midb()、ascb()、ascw()的含义很用法吗?
追答
lenb() 取得字符串的长度 lenb("Delphi") 等于 6
midb() 从字符串中取得一个子串 midb("Delphi", 2, 4) 等于 "elph"
ascb() 取得单字节的ASC码 asc("A") 等于 65
ascw() 取得双字节的ASC码 asc("中") 等于 214 208
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询