Thanks for your explanation. That's really weird if the length depends on 
actual integer values! Seems I need to reorganize my serialization logic.

在 2016年8月19日星期五 UTC-4下午2:20:01,Feng Xiao写道:

>
>
> On Fri, Aug 19, 2016 at 10:50 AM, <[email protected] <javascript:>> 
> wrote:
>
>> The question is:
>>
>> My message looks like:
>>
>> Message data
>> {
>>     optional uint32 object_id = 1;
>>     optional uint32 next_id = 2;
>> }
>>
>> I might define my message object like below:
>>
>> data;
>> size_t msg_size_before = data.ByteSize();
>>
>> uint32 id = CreateNewId();
>> uint32 next_id = GetCurNextId();
>>
>> data.set_object_id(id);
>> data.set_next_id(next_id);
>>
>> size_t msg_size_after = data.ByteSize();
>>
>>
>> Since I defined only integers in my message type, can I always assume 
>> assert "msg_size_before == msg_size_after" ????
>>
> No, you can't.
>
> In protobuf an uint32 field type uses variable-length encoding. That means 
> its byte size depends on the actual value of the field. If you set a new 
> value, the byte size can change as well.
>  
>
>> -- 
>> You received this message because you are subscribed to the Google Groups 
>> "Protocol Buffers" group.
>> To unsubscribe from this group and stop receiving emails from it, send an 
>> email to [email protected] <javascript:>.
>> To post to this group, send email to [email protected] 
>> <javascript:>.
>> Visit this group at https://groups.google.com/group/protobuf.
>> For more options, visit https://groups.google.com/d/optout.
>>
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"Protocol Buffers" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to