|
|
| Autor |
Nachricht |
_Jules_ Newbie


Anmeldungsdatum: 08.11.2007 Beiträge: 2
|
Verfasst am: 09 Nov 2007 - 08:23:07 Titel: Byte Order Intel/PowerPc |
|
|
Hallo,
habe fogende Ausgangslage:
Versenden von Nachrichten über UDP zwischen PC (Intel) und PowerPC.
Programmiersprache ist ADA (bis auf die Socket Funktionen welche in C
implementiert sind). Der Code im PowerPC ist fest und kann nicht
verändert werden.
Hierbe ergibt sich folgendes Problem:
Da Intel und PowerPC ja verschiedene Byte Order haben, kommen die Daten welche vom PC an den PowerPC gesendet werden, dort in der falschen Reihenfolge an.
Der record meiner Struktur/en sieht zum Beispiel so aus:
for x use
record
A at 0 range 0 .. 15;
B at 2 range 8 .. 15;
C at 4 range 0 .. 15;
D at 6 range 0 .. 47;
...
E at 58 range 0 .. 1
F at 58 range 2 .. 3;
G at 58 range 4 .. 4;
...
end record
Mit den Funktionen htonl() und htons() kann man die Byteorder ja in C
ändern. Jedoch funktioniert dies ja nur richtig wenn es sich um 16 bzw.
32 Bit Datentypen handelt. Da ich aber selbst definierte Strukturen
versenden möchte klappt das so nicht.
Hat jemand einen Rat für mich?
Vielen Dank.
mfg. Julian |
|
 |
isi1 Moderator


 Anmeldungsdatum: 10.08.2006 Beiträge: 6796 Wohnort: München
|
Verfasst am: 09 Nov 2007 - 10:08:53 Titel: |
|
|
Beim Versenden, Julian,
füllt man ja ohnehin in den Sendepuffer um - und dabei bringe ich die Bytes der Variablen in die richtige Anordnung. Aufpassen muss man auch auf die Kompilerschalter, die die Minimallänge einer Variablen festlegen, sonst stimmt die Blocklänge nicht und man bekommt Füllbytes. _________________ Grüße aus München, isi •≡≈ ¹₁₂½√∠∞±∫αβγδεηκλπρσφω ΔΣΦΩ |
|
 |
_Jules_ Newbie


Anmeldungsdatum: 08.11.2007 Beiträge: 2
|
Verfasst am: 09 Nov 2007 - 12:57:34 Titel: |
|
|
Danke isi1.
Naja, mit umfüllen is da nicht viel, es wird halt die Adresse übergeben wo der Puffer anfängt und wie groß der Puffer ist....
Das mit der Blocklänge passt alles, da gibts keine Probleme...
Dachte nur dass es eventuell ein Kommando/Funktion oder soetwas in der Art gibt, zum umstellen der Byteorder!? |
|
 |
|