2017-12-06 1 views
1

C++アプリケーションからJavaアプリケーションにデータを転送する配列を作成しようとしています。 2つの言語のため、どのようにGoogleプロトコルメッセージをフォーマットしますか?Googleプロトコルの繰り返し値はどのように構造化されていますか?彼らの限界と利点は何ですか?

また、制限と利点は何ですか?

はこれまでのところ、私は次のようにあります

message Config { 
    repeated string types = 1; 
} 

私は代が欠けていると思います!

+0

「これはどのように構成されていますか」という意味ですか? - または、「私のアプリでこれをどうやって動作させるの?」という意味ですか? - 彼らは非常に異なる質問です。 –

+0

私は、「これはどのようにワイヤで構成されていますか? –

+0

エンコーディング仕様が利用可能です - 単に "protobuf encoding"を検索してください - しかし、それは率直に言って、これはライブラリ実装者にとって興味深いことです。あなたが既存のライブラリを消費しているだけの場合は、それを心配するのはライブラリの仕事です –

答えて

1

あなたはワイヤーにを意味する場合 - その後、最初に:それを心配するシリアライザの仕事ですが、この場合は、それが単に(繰り返し要素ごと)として実装されています

0x0a = "field 1, length prefixed" (strings are always length prefixed) 
{number of bytes as UTF8, varint-encoded} 
{that many bytes of UTF8} 

だから、3つのアイテムが繰り返されると、0x0a、varint、payloadの3つのロットが次々にスラミングされます。整数などのプリミティブ型の場合は、配列全体のバイト長を先読みすることで、要素ごとのヘッダーが不要になる「パック」エンコーディングがあります。最初に、次に配列の内容をraw以外トークン化されたデータ。


あなたは、呼び出し側の視点からを意味するならば、:それがダウンして実装することですが、基本的にあなたが期待すべきいくつかの馴染みのAPI - そのフレームワークに共通します。これは、repeatedのデータが配列/ベクトルとして公開されているか、AddなどのAPIを持つ「コレクション」クラスを意味する可能性があります。それは、目標の枠組みと実装する著者の気まぐれな点で賢明なものに完全に依存します。

関連する問題