HintergrundWie schreiben Sie (portabel) umgekehrte Netzwerk-Byte-Reihenfolge?
Wenn Binärdateiformate entwerfen, ist es in der Regel empfohlen, ganze Zahlen im Netzwerk-Byte-Reihenfolge zu schreiben. Dafür gibt es Makros wie htonhl()
. Aber für ein Format wie WAV wird eigentlich das Little-Endian-Format verwendet.
Frage
Wie schreiben Sie portably Little-Endian-Werte, unabhängig davon, ob die CPU Code läuft auf ist ein Big-Endian oder Little-Endian-Architektur? (Ideen: können die Standard-Makros ntohl()
und htonl()
„umgekehrt“ verwendet werden, irgendwie Oder sollte der Code nur Testlaufzeit, wenn es auf einem kleinen oder Big-Endian-CPU und wählen Sie den entsprechenden Codepfad läuft?)
So Die Frage geht nicht wirklich um Dateiformate, Dateiformate waren nur ein Beispiel. Es könnte irgendeine Art von Serialisierung sein, bei der ein kleines Endian "auf dem Draht" erforderlich ist, wie beispielsweise ein (häretisches) Netzwerkprotokoll.
Sie haben es drei Fragen, aber nur zwei abheben. –
@ user2096041, neu angeordnet, ist es klarer? –
Um die Endianness des Host-Systems zu finden, können Sie diesem Link folgen: http://stackoverflow.com/questions/1001307/detecting-endianness-programmatical-in-ac-program –