2009-06-18 13 views
1

外部アプリケーションから取得する場合、バイト[]を処理する必要があります。外部アプリケーションもc#で実行され、UDP経由でバイトを送信します。 、私はバイトを得るとき、私はその内の[]文字を取る必要があり、そうマーシャルC#を使用してマネージコードに管理されていない構造体


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

とget:彼らは、下に記載されている構造体から変換されたバイトを送信していますそのchar []の文字列。

私の説明は明らかです。私はこの種の管理されていないコーディングに慣れています。 これを手伝ってください。 緊急です。ありがとう。

+0

UDP接続から生のバイトを読み取っていますか? –

答えて

2

おそらくあなたはByValTStr(文字列の性質に応じて、それは異なる場合があります)としてそれを宣言する必要があります:それはすでにそれはおそらく必要をやっている、char[]を配っていた場合:

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

UPDATEを変換(エンコーディングの処理を含む)が正しく行われているので、必要と思われるだけです。

string str = new string(instance.federation_name); 
+0

私は外部アプリケーションにアクセスできません。 私は何をしなければならない、私のアプリケーションにshudがあります。ありがとう。 – Anuya

+0

こんにちは、 インスタンスを取得する方法 文字列str =新しい文字列(instance.federation_name); ??? ありがとうございます。 私はこれに新しいビーです。 – Anuya

+0

このようなインスタンスを返す(または取る)関数がおそらくあります...そこにはありませんか?そうでない場合、その構造体を使用する際のポイントは何ですか? –

関連する問題