Warum werden Daten von Big Endian umgedreht, bevor sie in LE gespeichert werden?

Warum werden Daten von Big Endian umgedreht, bevor sie in LE gespeichert werden?

Angenommen, A ist eine BE-Maschine und sendet 0x44332211 Daten an B, das LE ist. Standardmäßig verwendet A htonl von 0x44332211, was nichts anderes als 0x44332211 ist.

Wenn 0x44332211 nun B erreicht, weiß B, dass es sich um ein BE-Format handelt, daher wechselt B mithilfe der htonl-Funktion und ändert es in 0x11223344.

Was bedeutet dieses Umdrehen? Ich habe dieses Konzept im Internet gelesen. Warum ist vor dem Speichern ein Umdrehen erforderlich?

Denn in diesem Fall wird der umgedrehte Wert 0x11223344 in LE wie 0x44332211 gespeichert, was sich von dem unterscheidet, was A sendet, weil B es anders interpretiert, obwohl sie ähnlich aussehen?

/* Konvertierung von BE nach LE */

Antwort1

Die htonl()und ntohl()-Funktionen in einer Big-Endian-C-Bibliothek tun eigentlich nichts (sie sind „No-Op“s). Auf diese Weise kann derselbe Code sowohl auf BE- als auch auf LE-Maschinen verwendet werden. Kompiliert mit der C-Bibliothek auf der LE-Maschine vertauschen diese Funktionen die Bytes, aber auf der BE-Maschine lassen sie sie gleich, da die Netzwerk-Bytereihenfolge Big Endian ist und der Host bereits Big Endian ist.

Mit anderen Worten: In Ihrem Beispiel ändert die BE-Maschine A nie etwas. Nur die LE-Maschine B tut das.

Antwort2

Eigentlich ist ein Umdrehen vor der Speicherung in einer bestimmten Weise nicht erforderlich. Es ist erforderlich, weil der Host die Little-Endian-Reihenfolge verwendet. Wenn er also vom Netzwerk eine Zahl empfängt, die länger als ein Byte ist, dreht er die Bytes um, um diese Zahl richtig zu interpretieren. Dieses Umdrehen ist erforderlich, bevor die Daten für welchen Zweck auch immer verwendet werden.

Stellen Sie sich als Analogie vor, Sie lesen einen Manga, der im japanischen Original gedruckt ist (d. h. die Seite, die normalerweise die letzte ist, ist tatsächlich die erste). Wenn Sie sich dieser Tatsache nicht bewusst sind und das Buch nicht „umblättern“, können Sie die Geschichte einfach nicht verstehen.

verwandte Informationen