2011-07-24 14 views
1

protobuf-netには、バイトフィールドがありますか?プロトコルバッファのバイト配列フ​​ィールドの仕様は仕様ですか?protobuf-netではバイトフィールドを持つことができますか?

基本的には、さまざまなオブジェクトをワイヤで送信したいと考えています。この場合、byte [] Payloadは別のプロトコルバッファの直列化オブジェクトになります。私はこのように私はタイプに

おかげ

public sealed class CellUpdateTransmission 
{ 
    public int RowIndex { get; private set; } 
    public int CellIndex { get; private set; }   
    public byte[] Payload {get;private set;} 

答えて

1

そうすることができますがspecificyする必要はありませんありません。 2番目のフェーズでは、バイトをメモリストリームに移動し、通常の方法で逆シリアル化します。

  byte[] Payload= datafromsomewhere; 
      var ms = new MemoryStream(Payload); 
      var req = Serializer.Deserialize<AbcClass>(ms); 
1

はい、bytebyte[]の両方がサポートされています。後者は.proto仕様のbytesにマップされます。これは、実際にサブメッセージが通常どのように表現されるかと同じです。シリアライザにメンバーについて知らせるだけです(最も簡単には、[ProtoMember(3)]のような属性を追加します)。

+0

バイトフィールドは.proto仕様のものにマップされますか?バイトフィールドで書かれたバイナリデータを逆シリアル化する別の方法を見つける必要がありますか?ありがとう! – Dawson

+0

@ツールボックス1バイト?または多くのバイト? varint(int/uintに使用)は、0〜127の場合は1バイト、128〜255の場合は2バイトです。 'bytes'は複数バイトに完全にマッピングされます。 –

関連する問題