Abbiamo bisogno di supportare 3 piattaforme hardware: Windows (little Endian) e Linux Embedded (grande e piccolo Endian). Il nostro flusso di dati dipende dalla macchina che utilizza e i dati devono essere suddivisi in campi di bit.Supporto Big Endian e Little Endian per l'ordinamento dei byte
Vorrei scrivere una singola macro (se possibile) per astrarre il dettaglio. Su Linux posso usare bswap_16
/bswap_32
/bswap_64
per le conversioni di Little Endian.
Tuttavia, non riesco a trovare questo nei miei include Visual C++.
Esiste un generico integrato per entrambe le piattaforme (Windows e Linux)?
In caso contrario, cosa posso utilizzare in Visual C++ per eseguire lo scambio di byte (oltre a scrivere da solo - sperando che alcune macchine siano integrate in modo ottimizzato)?
Grazie.
Tali funzioni sono relativamente universali per qualsiasi sistema operativo che comprende reti (ad esempio Internet). Alcuni sistemi operativi più moderni. –
Nota che la loro implementazione di esempio usando 'union' non è garantita per funzionare. –
Sì, hai ragione, i sindacati dovrebbero essere imballati. Grazie per averlo indicato. Si prega di consultare l'aggiornamento alla mia risposta. @ SimonRichter – alk