<?xml version="1.0" encoding="utf-8"?>
<!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN" "http://www.wapforum.org/DTD/wml_1.1.xml">
<wml>
<head><meta forua="true" http-equiv="Cache-Control" content="max-age=0" /></head>
<card title="C#怎样去掉定长字符串末尾的“Null”字符？" id="card1">
<p> 游客</p><p>
标题:C#怎样去掉定长字符串末尾的“Null”字符？<br/>
正文:<br/>
问题：比如你指定的字符串长度是256，那么返回值不足256字节的就会用null填充（而不是用空格填充），怎样去除多出来的Null字符，只保留有效字符串呢？答案：用Format()函数就行了，format()是可以过滤掉null，最快的解决办法 判断是否为chr(0)嗯，我发现如果用format函数去除Null字符，则字串的开始几个字母不能是字母和数字混合的类型，如果是的话，Null不会被去除。看来还是用chr(0)循环合适。public struct Camnpr{[MarshalAs(UnmanagedType.ByValArray, SizeConst = 37)]//c#在与c++/c 的dll交互时,如果返回的值不过定长，c#会自动填补NULL来处理。public byte[] UID;[MarshalAs(UnmanagedType.ByValArray, SizeConst = 60)]public byte[] Name;}//char[] strTemp = string.Format(&amp;quot;{0}&amp;quot;, Win32API.GetByteToString(ctl.szName)).ToCharArray();//string strSwitch = string.Empty;//for (int i = 0; i &amp;lt; strTemp.Length; i++)//{// if (strTemp[i] != (char)0 &amp;amp;&amp;amp; strTemp[i] != (char)1 &amp;amp;&amp;amp; strTemp[i] != (char)2 &amp;amp;&amp;amp; strTemp[i] != (char)3 &amp;amp;&amp;amp; strTemp[i] != (char)4 &amp;amp;&amp;amp; strTemp[i] != (char)5 &amp;amp;&amp;amp; strTemp[i] != (char)6 &amp;amp;&amp;amp; strTemp[i] != (char)7 &amp;amp;&amp;amp; strTemp[i] != (char)8)// {// strSwitch += strTemp[i];// }//}附：C#去除byte[]转换成字符串后byte为null的&amp;ldquo;空格&amp;rdquo;<br/><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=394&amp;Page=1">[&lt;&lt;]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=394&amp;Page=1">[[1]]</a><a href="http://camnpr.com/wap.asp?mode=WAP&amp;act=View&amp;id=394&amp;Page=1">[&gt;&gt;]</a><br/>
<br/>
<a href="wap.asp?act=Com&amp;id=394">查看评论(0)</a><br/>
<a href="wap.asp?act=AddCom&amp;inpId=394">发表评论</a><br/><br/>

<br/>

<br/>
<a href="http://camnpr.com/wap.asp">首页</a>
</p>
</card>
</wml>