Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   einzelne bytes in ein 4-byte int umwandeln (https://www.delphipraxis.net/192101-einzelne-bytes-ein-4-byte-int-umwandeln.html)

Zacherl 20. Mär 2017 16:50

AW: einzelne bytes in ein 4-byte int umwandeln
 
Zitat:

Zitat von p80286 (Beitrag 1364856)
muß das nicht
Delphi-Quellcode:
packed record
sein?
oder ist das bei varianten Records automatisch dabei?

Ja, sollte der Sicherheit halber
Delphi-Quellcode:
packed
sein, wobei in diesem Falle kein Padding und Aligning stattfinden sollte.

t.roller 20. Mär 2017 17:08

AW: einzelne bytes in ein 4-byte int umwandeln
 
Alles schon mal dagewesen...

p80286 20. Mär 2017 17:50

AW: einzelne bytes in ein 4-byte int umwandeln
 
das nennt man "Weitergabe des Wissens" und ist unsere Daseinsberechtigung.

Gruß
K-H

t.roller 20. Mär 2017 20:49

AW: einzelne bytes in ein 4-byte int umwandeln
 
Noch eine Lösung:
Delphi-Quellcode:
procedure TForm1.ButtonClick(Sender: TObject);
var
aByte  : Packed array[0..3] of Byte;
dwErgebnis : DWord absolute aByte;
begin
  //Einzelbyte eintragen
  aByte[0] :=$10;
  aByte[1] :=$20;
  aByte[2] :=$30;
  aByte[3] :=$40;
  //Ergebnis verwenden
  Label1.Caption:= IntToStr(dwErgebnis);
end;

Mavarik 20. Mär 2017 21:31

AW: einzelne bytes in ein 4-byte int umwandeln
 
Zitat:

Zitat von p80286 (Beitrag 1364842)
(:hi: Mavarik)

Thanx...

JayZ 21. Mär 2017 21:35

AW: einzelne bytes in ein 4-byte int umwandeln
 
Zitat:

Zitat von Neutral General (Beitrag 1364840)
Oder in einer Zeile ohne Records:

Delphi-Quellcode:
Int := (B1 shl 24) or (B2 shl 16) or (B3 shl 8) or B4;

Sorry das ich nochmal nachfrage aber gäbe es auch so einen einzeiler (pro byte) um das umgekehrte zu machen?

Also zb:
Delphi-Quellcode:
Int := $ABCDEF42;
byte1 := $AB; // get first byte from int
byte2 := $CD; // get 2nd byte from int
byte3 := $EF; // get 3rd byte from int
byte4 := $42; // get 4th byte from int
danke :)

Uwe Raabe 21. Mär 2017 21:54

AW: einzelne bytes in ein 4-byte int umwandeln
 
Zitat:

Zitat von JayZ (Beitrag 1364988)
Sorry das ich nochmal nachfrage aber gäbe es auch so einen einzeiler (pro byte) um das umgekehrte zu machen?

Delphi-Quellcode:
byte1 := LongRec(Value).Bytes[0];
byte2 := LongRec(Value).Bytes[1];
byte3 := LongRec(Value).Bytes[2];
byte4 := LongRec(Value).Bytes[3];

JayZ 21. Mär 2017 22:10

AW: einzelne bytes in ein 4-byte int umwandeln
 
geil danke! da werden mir ja ganz neue seiten von delphi gezeit :D nur so aus interesse... gibts da auch ne möglichkeit mit shl und shr die nicht allzu komplex ist? :stupid:

Uwe Raabe 21. Mär 2017 22:30

AW: einzelne bytes in ein 4-byte int umwandeln
 
Zitat:

Zitat von JayZ (Beitrag 1364991)
geil danke! da werden mir ja ganz neue seiten von delphi gezeit :D nur so aus interesse... gibts da auch ne möglichkeit mit shl und shr die nicht allzu komplex ist? :stupid:

Nee, nicht wirklich:

Delphi-Quellcode:
function GetByte(Index, Value: Integer): Byte;
var
  BitsToShift: Integer;
begin
  BitsToShift := (Index xor 3) shl 3;
  result := (Value and ($FF shl BitsToShift)) shr BitsToShift;
end;

Zacherl 21. Mär 2017 22:43

AW: einzelne bytes in ein 4-byte int umwandeln
 
Zitat:

Zitat von JayZ (Beitrag 1364991)
gibts da auch ne möglichkeit mit shl und shr die nicht allzu komplex ist? :stupid:

Die nicht-generische Variante ist etwas verständlicher:
Delphi-Quellcode:
B1 := DW and $FF;
B2 := (DW shr 8) and $FF;
B3 := (DW shr 16) and $FF;
B4 := (DW shr 24) and $FF;


Alle Zeitangaben in WEZ +1. Es ist jetzt 16:25 Uhr.
Seite 2 von 3     12 3      

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz