2

私が定義した場合:

message A {
 required int32 first = 1;
 optional int32 second = 2;
}

set_second(0) の後に serializeToArray() を実行した場合のスペースのサイズは、set_second(14353355445) を実行した後に serializeToArray() を実行した場合のスペースのサイズと同じではありません。

それらを同じサイズのスペースにする方法はありますか?

他の方法では、値が割り当てられていないオプションのフィールドに、値が割り当てられているのと同じサイズのスペースを持たせるにはどうすればよいですか?

4

2 に答える 2

0

帯域幅を節約するために特別な方法でエンコードされているため、全体のサイズが異なります。常に同じサイズが必要な場合は、fixed32代わりにフィールドタイプを使用できます。


ただし、オプション フィールドの値をまったく設定しないと、シリアル化されたサイズが再び異なることに注意してください。

于 2016-09-22T16:44:17.290 に答える