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*.