You can't. An int32 field that's been set to 0 is exactly the same as an int32 field that hasn't been set at all.
(For oneofs, you could still tell that it was the int32 field that was set, so that's slightly difference.)
From the documentation:
> Note that for scalar message fields, once a message is parsed there's no way of telling whether a field was explicitly set to the default value (for example whether a boolean was set to false) or just not set at all: you should bear this in mind when defining your message types.
If you need a field which is "an int32 value, or not set" you can use the google.protobuf.Int32Value message type.
Jon