5

私は C# でバイナリを使用するのが初めてで、これを行う最善の方法について質問があります。特定のバイナリ メッセージ形式を持つ通信しようとしているアプリケーションがあります。16 進数コードで始まり、B816 進数コードで終わりBB、その間にバイナリ メッセージが含まれている必要があります。メッセージのプロパティに簡単にアクセスできるように、バイト バッファを取得してメッセージにキャストできる最善の方法は何ですか? 構造体を想像しますが、正直なところ、よくわかりません。

編集:

バイナリにしたくない理由は、アプリケーションでデータを簡単に使用できるようにするためです。たとえば、コマンドの種類を表すバイナリ ビットを列挙型に変換したいと思います。このように(私がやりたいことの単なる表現):

struct CommandMessage
{
    public CommandType Command { get; set; }
    public object Data { get; set; }
}

enum CommandType
{
    UserJoined,
    MessageReceived
}
4

1 に答える 1

1

protobuf-netシリアル化に使用することをお勧めしますDTO

Packageしたがって、たとえば(CommandMessageサンプル内で)エンティティを定義します。

public Command Command;

public byte[] Data;(連載protobuf)

に基づいて、を使用して具体的な型Commandに逆シリアル化できます。DataDTOprotobuf

メッセージが特別なプレフィックスで始まる場合は、これも処理できPackageます。また、Packageバイナリストリームまたはバッファへの/からの書き込み/読み取りを処理する必要があります (これは非常に簡単です)。

例えばpackage.WriteTo(buffer)、生成し[BB,Command,Data,B8]ます。同じpackage.ReadFrom()

于 2013-04-06T09:09:33.453 に答える