当我从外部应用程序获取时,我需要处理bytes []。外部应用程序也在C#中完成,它们通过UDP发送字节。它们发送从struct转换的字节,如下所述:
public struct DISPATCH_MESSAGE
{
[MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
public char[] federation_name; // Units: nil Range: nil
}
所以,当我得到字节时,我需要取出里面的char [], 并从char []中获取字符串。
我是这种非托管编码的新手。
答案 0 :(得分:2)
可能你应该将它声明为ByValTStr
(取决于字符串的性质,它可能会有所不同):
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
public struct DISPATCH_MESSAGE{
[MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]
public string federation_name;
}
更新:如果它已经发出了char[]
,它可能正确地进行了必要的转换(包括处理编码),所以我认为你只需要:
string str = new string(instance.federation_name);