![]() |
Zahl in Hex Wert, Hex in Byte, Byte in Zahl
Muss Zahlen in deren Hex Wert zerlegen, aus 9999 wird somit 270F, aus 100 wird 0064, diesen Wert als Byte speichern und nach Datenübertragung wieder zusammensetzen. Ich nutze hierzu folgenden Code.
Geht das auch besser ?
Delphi-Quellcode:
/edit: Muss als Byte übertragen werden
procedure TForm1.Button1Click(Sender: TObject);
var Buf : array [0..1] of Byte; s : String; begin // zur Übertragung s := IntToHex(StrToInt('9999'), 4); ShowMessage(s); // Datenübertragung muss als BYTE Wert erfolgen Buf[0] := StrToIntDef('$' + s[1] + s[2], 0); Buf[1] := StrToIntDef('$' + s[3] + s[4], 0); // nach Übertragung s := Format('%.2x', [Buf[0]]) + Format('%.2x', [Buf[1]]); s := IntToStr(StrToInt('$' + s)); ShowMessage(s); end; |
Re: Zahl in Hex Wert, Hex in Byte, Byte in Zahl
Wozu wandelst du denn mehrfach um, bei de Rückwandlung?
- 4x-Hex kommem an - wird von dir in 2x Byte umgewandelt - dann wieder in 2x 2x-Hex - zusammengesetzt zu einem 4x-Hex - und dann nochmal zusammen in einen Integer (Word) Da kann man so Einiges (grau) weglassen. PS: Eine Prüfung ob der Hex-String OK war, wäre vielleicht auch keine Schlechte Idee
Delphi-Quellcode:
oder villeicht gleich noch den Wertebereich mit prüfen
procedure TForm1.Button1Click(Sender: TObject);
var i : Integer; s : String; begin i := 4 // umwandeln s := IntToHex(StrToInt('9999'), i); // s übertagen ShowMessage(s); // umwandeln if TryStrToInt('$' + s, i) then begin // i wurde empfangen ShowMessage(IntToStr(i)); end else ShowMessage('Fehler'); end;
Delphi-Quellcode:
* ...
// umwandeln if TryStrToInt('$' + s, i) and (i >= 0) and (i <= $FFFF) then begin // i wurde empfangen ShowMessage(IntToStr(i)); end else ShowMessage('Fehler'); end; |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:07 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