La maggior parte delle volte, probabilmente, ma non scommetterci sopra, perché se sbagli, perderai alla grande.
Se hai davvero, davvero bisogno di avere informazioni binarie identiche, dovrai creare campi di bit con maschere di bit, ad esempio usi un corto senza segno (16 bit) per Message, e poi fai cose come versionMask = 0xE000 per rappresentare i tre bit più in alto.
C'è un problema simile con l'allineamento all'interno degli struct. Ad esempio, le CPU Sparc, PowerPC e 680x0 sono tutte big-endian e l'impostazione predefinita comune per i compilatori Sparc e PowerPC è allineare i membri della struttura su limiti di 4 byte. Tuttavia, un compilatore che ho usato per 680x0 era allineato solo su limiti di 2 byte e non c'era alcuna opzione per modificare l'allineamento!
Quindi per alcune strutture, le dimensioni su Sparc e PowerPC sono identiche, ma più piccole su 680x0, e alcuni membri si trovano in offset di memoria diversi all'interno della struttura.
Questo era un problema con un progetto su cui ho lavorato, perché un processo server in esecuzione su Sparc avrebbe interrogato un client e avrebbe scoperto che era big-endian, e presumendo che potesse semplicemente spruzzare strutture binarie sulla rete e il client poteva farcela. E questo ha funzionato bene sui client PowerPC e si è arrestato in modo anomalo sui client 680x0. Non ho scritto il codice e ci è voluto un po 'di tempo per trovare il problema. Ma è stato facile risolverlo una volta che l'ho fatto.