![]() |
einzelne bytes in ein 4-byte int umwandeln
hallo
es gibt doch in c++ den operator >> mit dem man irgendwie bytes rumschrieben kann. kann man in delphi irgendwie 4 bytes definieren und dann diese vier bytes zussamenfügen das es das ergiebt:
Delphi-Quellcode:
am liebsten math operationen, ich krieg nur ein string gewrustel hin :(
var
b1, b2, b3, b4 : byte; int : integer; begin b1 := $AB; b2 := $CD; b3 := $EF; b4 := $42; // int := $ABCDEF42; end; dankeschon mal! :stupid: |
AW: einzelne bytes in ein 4-byte int umwandeln
var
b1, b2, b3, b4 : byte; int : integer; begin b1 := $AB; b2 := $CD; b3 := $EF; b4 := $42; int := b1; int := (int shl 8) + b2; int := (int shl 8) + b3; int := (int shl 8) + b4; ShowMessage(IntToHex(int, 8)); Gruß, Geert |
AW: einzelne bytes in ein 4-byte int umwandeln
Es ginge auch mit einem varianten Record:
Delphi-Quellcode:
type
TZahl = record case integer of 1: (Zahl: integer); 2: (b4, b3, b2, b1: Byte) end; procedure TFormTest.FormCreate(Sender: TObject); var Zahl: TZahl; begin Zahl.b1 := $AB; Zahl.b2 := $CD; Zahl.b3 := $EF; Zahl.b4 := $42; ShowMessage(IntToHex(Zahl.Zahl, 8)); end; |
AW: einzelne bytes in ein 4-byte int umwandeln
Oder in einer Zeile ohne Records:
Delphi-Quellcode:
Int := (B1 shl 24) or (B2 shl 16) or (B3 shl 8) or B4;
|
AW: einzelne bytes in ein 4-byte int umwandeln
wow das sind aber viele möglichkeiten hehe
vielen vielen dank euch allen =) |
AW: einzelne bytes in ein 4-byte int umwandeln
oder so:
Delphi-Quellcode:
(:hi: Mavarik)
var
i : integer; b : Array [0..3] of Byte absolute i; begin b[0]:=$AB; b[1]:=$CD; b[2]:=$EF; b[3]:=$42; end; Gruß K-H |
AW: einzelne bytes in ein 4-byte int umwandeln
Ähnlich dem, was DeddyH gezeigt hat, nur mit Bordmitteln:
Delphi-Quellcode:
Oder unter Verwendung von Winapi.Windows:
var
Zahl: LongRec; { in Sysutils } begin Zahl.Bytes[0] := $AB; Zahl.Bytes[1] := $CD; Zahl.Bytes[2] := $EF; Zahl.Bytes[3] := $42; ShowMessage(Integer(Zahl).ToHexString(8)); end;
Delphi-Quellcode:
ShowMessage(MakeLong(MakeWord($42, $EF), MakeWord($CD, $AB)).ToHexString(8));
|
AW: einzelne bytes in ein 4-byte int umwandeln
Die Frage die ich mir immer stelle ist: Was ist denn jetzt das Schnellste ?
DeddyHs und Mavariks Lösungen habe ich ja im Verdacht ganz gut zu sein. Aber es könnte am Ende doch NeutralGeneral der Gewinner sein, weil da der Compiler die Chance hat bis auf die Knochen zu optimieren. Hat das schonmal mal einer vermessen ? Rollo |
AW: einzelne bytes in ein 4-byte int umwandeln
Die Record-Varianten (und das absolute) sind wahrscheinlich am schnellsten weil da quasi gar nichts gerechnet wird.
|
AW: einzelne bytes in ein 4-byte int umwandeln
Frage:
muß das nicht
Delphi-Quellcode:
sein?
packed record
oder ist das bei varianten Records automatisch dabei? Gruß K-H |
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:35 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 by Thomas Breitkreuz