protobuf ensures that the *value of primitives* will be preserved; so if you send the uint32 23433451, it will be decoded as 23433451 regardless of the CPU/process endianness of sender and receiver. The details are here: https://protobuf.dev/programming-guides/encoding/ - but they **don't matter** unless you're writing your own protocol-level tooling.
What the receiver does with that value, however, is up to the receiver. For example, if they interpret that as IPv4 bytes using shift/mask operators: it will be work the same anywhere. If they interpret that as IPv4 bytes using "punning" or any other in-place re-interpret cast: then expect problems. But that's not an issue in the protobuf side - it is an issue in the code that *consumed it*. On Saturday, 21 October 2023 at 07:48:03 UTC+1 Kumar bhat wrote: > What happens if a uint32_t is sent from little endian system and received > by bit endian system. For eg: An Ipv4 address. Can we send the IP address > in any byte order and be able to see the same value in receiver of a > different endian machine? If thats the case, I dont see any documentation > for the same. -- 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 view this discussion on the web visit https://groups.google.com/d/msgid/protobuf/b5b87de0-6cd0-471a-b517-6d2e2f62f318n%40googlegroups.com.
