![]() |
Aus einem Word das High und Low Byte extrahieren
Hallo ich habe folgendes Problem,
ich habe ein Word:
Delphi-Quellcode:
Gibt es hier für eine Delphi Funktion ??
..
var einWord:Word; HighByte:Byte; LowByte:Byte; begin einWord:=$AAFF; ... HighByte:= GiveMeHighByte(einWord); // ich will auf das Highbyte (hier $AA) LowByte:= GiveMeLowByte(einWord); // und das Lowbyte hier($FF) zurückgeliefert bekommen ... Oder muss ich über die Hex (String)-Umwandlung gehen??? Danke schonmal im Vorraus. |
Re: Aus einem Word das High und Low Byte extrahieren
Es gibt die Hi und Lo-Funktionen, geht aber auch selber ganz leicht:
Delphi-Quellcode:
Ein Word sieht ja so aus:
hibyte:=myword shr 8;
lobyte:=myword and $FF;
Code:
Wenn du das jetzt um 8 nach rechts shiftest, siehts so aus:
hh hh hh hh ll ll ll ll
Code:
Und bei and $FF siehts so aus:
00 00 00 00 hh hh hh hh
Code:
00 00 00 00 ll ll ll ll
|
Re: Aus einem Word das High und Low Byte extrahieren
gibts dafuer nicht die Lo("wert") und Hi("wert") anweisungen ?
richard |
Re: Aus einem Word das High und Low Byte extrahieren
Nein, Low/High geben den Maximal- und Minimalwert für einen Typen zurück.
|
Re: Aus einem Word das High und Low Byte extrahieren
viele Wege wführen nach Rom:
Delphi-Quellcode:
Edit:
highword:=wert div 65536;
lowword:=wert mod 65536;
Delphi-Quellcode:
Oder noch ganz anders:
highbyte:=lowword div 256;
lowbyte:=lowword mod 256;
Delphi-Quellcode:
asm
xor eax,eax mov eax,dword ptr wert mov lowword, ax mov highbyte, ah mov lowbyte, al end; |
Re: Aus einem Word das High und Low Byte extrahieren
Hey danke sirus,
ja hatte es erst mit High() u. Low() probiert, hatte die Funktion auch schonmal angewendet, wusste nur nicht mehr wie sie heißt... Jetzt weiß ich es Hi u. Lo. heißt... danke. |
Re: Aus einem Word das High und Low Byte extrahieren
@Sirius: Die ersten beiden Methoden sind viel umständlicher und langsamer, die letzte ist wirklich unnötig kompliziert. Inline-Assembler ist ne tolle Sache, aber man kann es auch übertreiben. ;)
|
Re: Aus einem Word das High und Low Byte extrahieren
man kann sich auch einfach einen record der gleichen größe erstellen, das ganze auf den Recordtyp casten und dann entsprechend auf die Werte zugreifen. Oder man nimmt die Speicheradresse interpretiert diese als PByte und addiert halt das eine Byte dazu um auf das nächste Byte zu gelangen.
|
Re: Aus einem Word das High und Low Byte extrahieren
...wobei man aber beachten muss, dass wenn x die Adresse ist, das Lo-Byte bei x und das Hi-Byte bei x+1 liegt.
|
Re: Aus einem Word das High und Low Byte extrahieren
Zitat:
mfg |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz