As Adam said, -1 has a representation that is not just a single 0xFF. To
decode a varint, you have to read the bytes until the most significant bit
is 0. (See
http://code.google.com/apis/protocolbuffers/docs/encoding.html#varints)
Note that int32 values are sign-extended for wire compatibility with int64,
so you will get a 10-byte varint.

On Thu, Jan 13, 2011 at 3:49 AM, Adam Skutt <ask...@gmail.com> wrote:

>
> On Jan 13, 2:23 am, 飞 杨 <youngphy.y...@dianping.com> wrote:
> > Dear sir,
> >
> > I found, in the protocolbuf int encode, the byte 0xFF may appear, then
> > how can i distinguish the EOS and the business -1, the two both are -1
> > when use the inputstream.read()..
>
> Pay closer attention to the definition of InputStream.read().  The
> return type is an int, which is 32-bits.  '-1' and 0x000000FF are
> distinct values.  Make the check before casting the return value to an
> byte.  That being said, I wouldn't read data one byte at a time either
> without a good reason.
>
> Adam
>
> --
> You received this message because you are subscribed to the Google Groups
> "Protocol Buffers" group.
> To post to this group, send email to protobuf@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 protobuf@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.

Reply via email to