Thank you for your reply. Yes you are right. I just wondered why int32 consists of 10 bits, rather than a maximum of 5 (in the case of large or negative numbers).
Adam 2010/3/21 Henner Zeller <henner.zel...@googlemail.com> > On Sun, Mar 21, 2010 at 08:05, Adam Kwintkiewicz > <adam.kwintkiew...@gmail.com> wrote: > > "... for a negative number, the resulting varint is always ten bytes long > > ..." > > Reason for that is the varint encoding: it only encodes the bits that > are set in an integer. For small positive values that results in a > more compact format. However, negative values always have the very > first bit set (the sign bit), so these values end up to be longer. > > If you have values that are centering around zero but whose absolute > values usually don't use the full range, then the 'sint32' would be > probably a better encoding for you: it is done in 'zigzag'-encoding > that uses short encoding for small absolute values and longer for > larger absolute values. > If your numbers are big or pretty random, then you might consider fixed32. > > Note however, that changing the type from int32 to sint32 or fixed32 > are not compatible - so if you've already data stored that way or have > running services that talk RPC in that way, you need an upgrade path; > probably adding a new field with the new encoding, setting it in > parallel for some time (until all other users are gone). If you have > stored data the old way and don't want to recode than you've to > forever test - on reading - if the 'old' field exists and take that > value. > > -h > > > > > I didn't saw that part. > > Thanx > > > > 2010/3/21 Evan Jones <ev...@mit.edu> > >> > >> On Mar 21, 2010, at 8:46 , adamdms wrote: > >>> > >>> I am wonder why int32 field (with negative value) has 10 bytes? > >>> 10 - field No 2, wire type 0 > >>> FD FF FF FF FF FF FF FF FF 01 - field value = -3 > >>> > >>> Can someone explain it to me? > >> > >> See: > http://code.google.com/apis/protocolbuffers/docs/encoding.html#types > >> > >> Hope this helps, > >> > >> Evan > >> > >> -- > >> Evan Jones > >> http://evanjones.ca/ > >> > > > > -- > > You received this message because you are subscribed to the Google Groups > > "Protocol Buffers" group. > > To post to this group, send email to proto...@googlegroups.com. > > To unsubscribe from this group, send email to > > protobuf+unsubscr...@googlegroups.com<protobuf%2bunsubscr...@googlegroups.com> > . > > For more options, visit this group at > > http://groups.google.com/group/protobuf?hl=en. > > > -- You received this message because you are subscribed to the Google Groups "Protocol Buffers" group. To post to this group, send email to proto...@googlegroups.com. To unsubscribe from this group, send email to protobuf+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/protobuf?hl=en.