1

外部アプリケーションから取得するときにbytes[]を処理する必要があります。外部アプリケーションもC#で実行され、UDPを介してバイトを送信します。彼らは以下に述べる構造体から変換されたバイトを送信しています:

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; 
 }

更新:すでにを提供している場合はchar[]、おそらく必要な変換(エンコードの処理を含む)を正しく実行しているので、必要なのは次のとおりです。

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