问题:比如你指定的字符串长度是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];
// }
//}