Moin,
Das kann C auch: Im Header
arpa/inet.h
findest duntohs
& Co, die für dich „das Denken übernehmen“:Ne, da muss ich schon selbst aktiv werden, das Denken nimmt mir da htons() gar nicht ab.
Doch.
Also den Code so schreiben, daß er entweder auf einer LE oder BE Architektur funktioniert.
Nein.
Oder mit Bitoperationen arbeiten so wie ich das hier gemacht habe. Also händisch in die Byteorder eingreifen.
Nein.
Beispiel ntohs
und htons
:
ntohs
stellt sicher, dass der in Network Byte Order vorliegendeuint16_t
-Wert anschließend in der für deinen aktuellen Host korrekten Byte Order vorliegt. Auf einem Big Endian-System muss dazu nichts weiter getan werden, der Wert wird durchgereicht, auf einem Little Endian-System findet ein Byte-Swapping statt. Ob du auf einem BE oder LE bist, braucht dich hier gar nicht zu kümmern,ntohs
kümmert sich darum.htons
arbeitet genau anders herum: Von deiner Host Byte Order wird in die Network Byte Order übersetzt (LE → BE) oder der Wert einfach durchgereicht (BE → BE).
Viele Grüße
Robert