Andy schrieb:
> Das ganze als lesbaren String auszugeben war nicht Sinn der Sache.
> Momentan arbeite ich in einem (leider fremden) Programm an einer kleinen
> Erweiterung, mit der ich ein struct an eine andere Maschine übergeben
> möchte. Eigentlich ganz simpel.
Es ist nicht wirklich empfehlenswert, structs einfach so wie sie im
Speicher stehen an eine andere Maschine zu senden, denn das funktioniert
nur solange die beiden Maschinen die gleiche (oder eine halbwegs
ähnliche) Architektur haben.
Sobald die beiden Maschinen sich zu sehr unterscheiden (Byte Order,
Wortbreite z.B., aber ggf. sogar schon bei unterschiedlichen
Compileroptionen!), kann das Speicherlayout der struct sich
unterscheiden, auch wenn beide Male derselbe Sourcecode kompiliert wird,
und dann funktioniert die Kommunikation nicht mehr.
Besser ist es, die Felder einzeln der Reihe nach in definierter Form zu
übertragen, also mit definierter Bitbreite, Byte-Reihenfolge etc. Das
kann ruhig in binärer Form geschehen, nur eben in einer einheitlichen,
architekturunabhängigen Form. Damit gibt es dann auch in der Zukunft,
bei Rechnerupgrades, neuen Compilerversionen etc. keine Probleme.
Aufgrund dieser Problematik gibt es überhaupt Begriffe wie "Network Byte
Order" und "Host Byte Order", und stellt z.B. das Unix-Socket-API
Funktionen wie htonl() und ntohl() zur Verfügung, die zwischen den
beiden umwandeln.
Andreas