我正在做这样的事情:
[StructLayout(LayoutKind.Sequential)]
public struct V_REQUEST
{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 1024)]
private string payLoad;
public string payLoadStr
{
set
{
if (value != null)
payLoad = value.PadRight(value.Length+1, '\0').ToCharArray();
}
}
}
public object somemethod(byte[] bytes_data)
{
string strrequest = Encoding.GetString(bytes_data);
myobj.payLoad = strrequest;
}
这总是会弄乱我的数据。我的意思是我会在我的数据中看到一些奇怪的字符。
然后我用这个替换了我的财产:
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 1024)]
private byte[] payLoad;
public string payLoadStr
{
set
{
if (value != null)
{
for (int i = 0; i < value.Length; i++)
payLoad[i] = value[i];
}
}
}
而且效果很好!!!为什么 ToCharArray 不安全?