Wenn jemand die Regeln brechen und eine Anwendung schreiben wollte, die mit Daten in wenig endianischer Reihenfolge anstelle von Netzwerk -Byte -Reihenfolge gesendet wird, wie würde man das machen? < /p>
Meine anfänglichen Gedanken sind jede Anwendung auf beiden Seiten der Verbindung müssten erkennen, welche Byte -Bestellung sie kompiliert worden war, und verwenden diese Informationen, um eine benutzerdefinierte Funktion aufzurufen, die wahrscheinlich eine Intrinsische wie eine der der Varianten von Byteswap (eine GCC /MSVC -Funktion, die einen Assemblerbefehl einbindet). < /p>
Gibt es eine bessere Alternative? p> Um diese Frage weiter zu klären.
- Es werden einige Daten vorhanden sein, die aus einem Puffer gesendet /empfangen werden müssen. < /li>
Diese Daten können eine Struktur < /Code sein > Auf dem Stapel, irgendwo auf dem Haufen, was auch immer es egal ist. Es enthält einen Typ wie int64_t . LI> Wir verwenden die HTON Funktionsfamilie, um in eine Richtung zu konvertieren, und NTOH Familie, um in umgekehrte Richtung zu konvertieren Diese Funktionen, bevor diese Daten mit send oder wir die umgekehrte Operation mit recv
, um auf die ursprüngliche Frage zurückzukehren, ist ich interessiert zu wissen, ob es eine vernünftige Möglichkeit gibt, eine alternative Familie zu schreiben von Funktionen zu ntoh und hton , die den anderen alternativen Vorgang ausführen. htonxxx wandelt Big Endian in Little Endian um und ntohxxx Little Endian in Big Endian konvertiert. Htonxxx ist eine Noop, und ntohxxx ist eine Noop.
Dies unterscheidet Kurs.