Wir müssen 3 Hardware-Plattformen unterstützen - Windows (Little Endian) und Linux Embedded (große und kleine Endian). Unser Datenstrom ist abhängig von der verwendeten Maschine und die Daten müssen in Bitfelder aufgeteilt werden.Big Endian und Little Endian Unterstützung für Byte Ordering
Ich möchte ein einzelnes Makro (wenn möglich) schreiben, um das Detail zu abstrahieren. Unter Linux kann ich bswap_16
/bswap_32
/bswap_64
für Little Endian-Konvertierungen verwenden.
Allerdings kann ich dies nicht in meinen Visual C++ enthalten finden.
Gibt es eine generische integrierte für beide Plattformen (Windows und Linux)?
Wenn nicht, was kann ich in Visual C++ verwenden, um Byte-Swapping durchzuführen (außer, es selbst zu schreiben - in der Hoffnung, dass eine Maschine für das integrierte System optimiert ist)?
Danke.
Diese Funktionen sind relativ universell für jedes Betriebssystem, das Netzwerke (z. B. Internet) versteht. Einige der modernsten Betriebssysteme. –
Beachten Sie, dass ihre Beispielimplementierung mit "union" nicht garantiert funktioniert. –
Ja, Sie haben Recht die Gewerkschaften sollten gepackt werden. Danke, dass du darauf hingewiesen hast. Bitte beachten Sie das Update zu meiner Antwort. @SimonRichter – alk