La mayoría de las veces, probablemente, pero no apueste la granja, porque si se equivoca, perderá mucho.
Si realmente, realmente necesita tener información binaria idéntica, deberá crear campos de bits con máscaras de bits; por ejemplo, usa un código corto sin firmar (16 bits) para Mensaje y luego crea cosas como versionMask = 0xE000 para representar los tres bits superiores.
Existe un problema similar con la alineación dentro de las estructuras. Por ejemplo, las CPU Sparc, PowerPC y 680x0 son todas big-endian, y el valor predeterminado común para los compiladores Sparc y PowerPC es alinear los miembros de la estructura en límites de 4 bytes. Sin embargo, un compilador que usé para 680x0 solo se alineó en límites de 2 bytes, ¡y no había ninguna opción para cambiar la alineación!
Entonces, para algunas estructuras, los tamaños en Sparc y PowerPC son idénticos, pero más pequeños en 680x0, y algunos de los miembros están en diferentes desplazamientos de memoria dentro de la estructura.
Este fue un problema con un proyecto en el que trabajé, porque un proceso de servidor que se ejecutaba en Sparc consultaba a un cliente y descubría que era big-endian, y suponía que simplemente podía lanzar estructuras binarias en la red y el cliente podía hacer frente. Y eso funcionó bien en los clientes de PowerPC y se estrelló enormemente en los clientes de 680x0. No escribí el código y me tomó bastante tiempo encontrar el problema. Pero fue fácil de arreglar una vez que lo hice.