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, <job4c...@gmail.com <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 protobuf+u...@googlegroups.com <javascript:>.
>> To post to this group, send email to prot...@googlegroups.com 
>> <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 protobuf+unsubscr...@googlegroups.com.
To post to this group, send email to protobuf@googlegroups.com.
Visit this group at https://groups.google.com/group/protobuf.
For more options, visit https://groups.google.com/d/optout.

Reply via email to