欢迎来到Doc100.Net免费学习资源知识分享平台!
您的位置:首页 > 程序异常 >

帮小弟我分析一下这个函数,多谢。

更新时间: 2014-01-05 01:52:45 责任编辑: Author_N1

 

帮我分析一下这个函数,谢谢。。。
Function GetLen(str)
  Dim l, t, c, i
  l = Len(str)
  t = l
  For i = 1 To l
  c = Asc(Mid(str, i, 1))
  If c < 0 Then c = c + 65536 
  If c > 255 Then t = t + 1  
  Next
  GetLen = t
  End Function
问题:这个函数是干什么用的?“If c < 0 Then c = c + 65536
If c > 255 Then t = t + 1 ”实现的是什么功能?

--参考方法--
取得一个字符串所占的字节数。可以处理中文和英文混合的字符串,一个英文字母字节数为1,一个汉字字节数为2.常用于在将字符串存入数据库之前检查字符串的长度。

如 
GetLen("aaa")=3
GetLen("aaa你好")=3+2*2=7


--参考方法--
应该是实现统计字符串的字节长度, 中文字符是2个字节,英文等ascii字符是1个字节。函数好像少了对t的计数.
If c < 0 Then c = c + 65536 将机器内码转成字符的acii码 (通过加2^16(2字节))
10000000000000000
If c > 255 Then t = t + 1 如果不是英文等ascii字符则长度为2,要用2个字节存取
--参考方法--
不过建议用js,方法如下
JScript code
<script type="text/javascript">
function getlen(s) 
{ 
var l = 0; 
var a = s.split(""); 
for (var i=0;i<a.length;i++) { 
if (a[i].charCodeAt(0)<299) { 
l++; 
} else { 
l+=2; 
} 
} 
return l; 
} 
document.write(getlen('aaa'));
document.write(getlen('aaa你好'));
</script> 			
			
		
上一篇:上一篇
下一篇:下一篇

 

随机推荐程序问答结果

 

 

如对文章有任何疑问请提交到问题反馈,或者您对内容不满意,请您反馈给我们DOC100.NET论坛发贴求解。
DOC100.NET资源网,机器学习分类整理更新日期::2014-01-05 01:52:45
如需转载,请注明文章出处和来源网址:http://www.doc100.net/bugs/t/2429/
本文WWW.DOC100.NET DOC100.NET版权所有。