Wie kann ich Bytes tauschen??
-
Ich hab ein Programm in ANSI C zum einlesen von Bildern geschrieben. Ich habe es auf einer UNIX geschrieben und würde es gerne auf meinem PC zum laufen bringen. Der Prozessor liest die Daten aber in umgekehrter Bytefolge ein. D.h. wenn ich bspw. mit dem Datentyp "short int" zwei Byte einlese (z.B. 0x01da), liest der PC dies folgendermassen ein 0xda01. Gibt es eine möglichkeit die Bytes zu tauschen wenn sie eingelesen sind?
Danke schonmal für die Hilfe!!!
-
http://www.netrino.com/Publications/Glossary/Endianness.html
[ Dieser Beitrag wurde am 01.01.2003 um 21:01 Uhr von kingruedi editiert. ]
-
Vielen Dank!
Man(n) muss halt wissen wo es steht
Gruß!!!
-
könntest auch den asm-befehl BSWAP (ab 486er) benutzen, aber ich glaube das is auf die dauer etwas umständlich...
cu todo
-
Bin noch nicht so fit im programmieren. Was ist denn der Befehl BSWAP und wie wende ich ihn an??
Danke und Gruß,
stegni
-
der BSWAP-Befehl ist extraa für solche Probleme wie deins von Intel entwickelt worden. Mit ihm wird die reihenfolge der bytes in einem word (2 byte/int) oder einem dword (4 byte/long int) herumgedreht:
Mov Ax,1234h
BSwap Axnun enthält Ax 3412h
oder folgendes:
Mov EAx,12345678h
BSwap EAxnun enthält EAx 78563421h
also genau das, was du brauchst...
cu todo