1

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

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

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

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

4

1 回答 1

2

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

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

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

string str = new string(instance.federation_name);
于 2009-06-18T14:45:48.603 回答