C#怎样去掉定长字符串末尾的“Null”字符?

分类:.Net知识问答| 发布:camnprbubuol| 查看: | 发表时间:2011/8/1

问题:比如你指定的字符串长度是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("{0}", Win32API.GetByteToString(ctl.szName)).ToCharArray();
//string strSwitch = string.Empty;
//for (int i = 0; i < strTemp.Length; i++)
//{
// if (strTemp[i] != (char)0 && strTemp[i] != (char)1 && strTemp[i] != (char)2 && strTemp[i] != (char)3 && strTemp[i] != (char)4 && strTemp[i] != (char)5 && strTemp[i] != (char)6 && strTemp[i] != (char)7 && strTemp[i] != (char)8)
// {
// strSwitch += strTemp[i];
// }
//}

附:C#去除byte[]转换成字符串后byte为null的“空格”

365据说看到好文章不转的人,服务器容易宕机
原创文章如转载,请注明:转载自郑州网建-前端开发 http://camnpr.com/
本文链接:http://camnpr.com/net-wiki/394.html