当我从外部应用程序获取时,我需要处理bytes []。外部应用程序也在C#中完成,它们通过UDP发送字节。它们发送从struct转换的字节,如下所述:

public struct DISPATCH_MESSAGE
{
    [MarshalAs(UnmanagedType.ByValArray, SizeConst = 16)]
    public char[] federation_name; // Units: nil     Range: nil
}

所以,当我得到字节时,我需要取出里面的char [], 并从char []中获取字符串。

我是这种非托管编码的新手。

有帮助吗?

解决方案

可能你应该将它声明为 ByValTStr (取决于字符串的性质,它可能会有所不同):

 [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Unicode)]
 public struct DISPATCH_MESSAGE{ 
    [MarshalAs(UnmanagedType.ByValTStr, SizeConst = 16)]   
    public string federation_name; 
 }

UPDATE:如果它已经发出 char [] ,它可能正确地进行必要的转换(包括处理编码),所以我认为你只需要:

string str = new string(instance.federation_name);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top