Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   String aus Hex konvertieren. (https://www.delphipraxis.net/185069-string-aus-hex-konvertieren.html)

Kostas 12. Mai 2015 21:14

String aus Hex konvertieren.
 
Hallo Zusammen,

sorry ich stehe momentan auf dem Schlauch.

Ich habe eine String(12) welcher aus immer zwei Zeichen jeweils eine Hex Zahl repräsentiert.
String1 := '00 00 00 05 55 50'; (die Leerzeichen sind eigentlich nicht vorhanden)
String2 := chr($00)+chr($00)+chr($00)+chr($05)+chr($55)+chr($ 50);

String2 beinhaltet als Ergebnis (#0#0#0#5'UP') den richtigen String.
Wie kann ich am besten umsetzen?

Gruß Kostas

Popov 12. Mai 2015 21:23

AW: String aus Hex konvertieren.
 
Ich verstehe nicht gar was du meinst. Suchst du evtl. das?
Delphi-Quellcode:
String2 := IntToHex($00, 2)+IntToHex($00, 2)+IntToHex($00, 2)+IntToHex($05, 2)+IntToHex($55, 2)+IntToHex($50, 2);
//

Sir Rufo 12. Mai 2015 21:24

AW: String aus Hex konvertieren.
 
Immer 2 Zeichen nehmen, daraus den Byte-Wert bestimmen und an ein Byte-Array oder Stream anhängen.
Dann kannst du daraus holen was du willst

Kostas 12. Mai 2015 21:30

AW: String aus Hex konvertieren.
 
Zitat:

Zitat von Popov (Beitrag 1301278)
Ich verstehe nicht gar was du meinst. Suchst du evtl. das?
Delphi-Quellcode:
String2 := IntToHex($00, 2)+IntToHex($00, 2)+IntToHex($00, 2)+IntToHex($05, 2)+IntToHex($55, 2)+IntToHex($50, 2);
//

Sorry für die schlechte Beschreibung.
Der String1 ändert sich natürlich. Ich müsste also eine Methode haben die aus dem String1
als Beispiel hier '000000055550' den String generiert #0#0#0#5'UP'
Immer zwei Zeichen aus dem String ergeben eine Byte. Die zwei Zeichen sind jeweils hex.
Die letzten zwei Zeichen sind somit $50 also ein "P" als Char.

Sir Rufo 12. Mai 2015 21:33

AW: String aus Hex konvertieren.
 
Zitat:

Zitat von Kostas (Beitrag 1301283)
Immer zwei Zeichen aus dem String ergeben eine Byte. Die zwei Zeichen sind jeweils hex.
Die letzten zwei Zeichen sind somit $50 also ein "P" als Char.

Dann mach das doch so wie du das hier beschrieben hast. Eine Schleife und ca. drei Zeilen Code

Popov 12. Mai 2015 21:47

AW: String aus Hex konvertieren.
 
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

  function GetChr(s: String; Index: Integer): Char;
  begin
    Result := Chr(StrToIntDef('$' + Copy(s, 1 + (Index - 1) * 2, 2), 0));
  end;

var
  s, String2: string;
  i: Integer;
begin
  s := '000000055550'; //anderes Beispiel (ABCDEF): '414243444546';
  String2 := '';
  for i := 1 to 6 do
    String2 := String2 + GetChr(s, i);

  ShowMessage(String2);
end;
Da vorne aber Nullen sind und #0 ein Steuerzeichen oder das Ende des Strings bedeutet, wird deine Zeichenfolge nichts anzeigen.

Kostas 12. Mai 2015 21:50

AW: String aus Hex konvertieren.
 
Verflixt noch eins das habe ich gemeint.

Delphi-Quellcode:
function HexToInt(value:string):Char;
        begin
          result := Chr(StrToInt('$' + value));
        end;

Kostas 12. Mai 2015 21:52

AW: String aus Hex konvertieren.
 
Zitat:

Zitat von Popov (Beitrag 1301288)
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);

  function GetChr(s: String; Index: Integer): Char;
  begin
    Result := Chr(StrToIntDef('$' + Copy(s, 1 + (Index - 1) * 2, 2), 0));
  end;

var
  s, String2: string;
  i: Integer;
begin
  s := '000000055550'; //anderes Beispiel (ABCDEF): '414243444546';
  String2 := '';
  for i := 1 to 6 do
    String2 := String2 + GetChr(s, i);

  ShowMessage(String2);
end;
Da vorne aber Nullen sind und #0 ein Steuerzeichen oder das Ende des Strings bedeutet, wird deine Zeichenfolge nichts anzeigen.


Danke danke, meine Blockade war, wie mache ich aus dem String eine Hex Zahl und habe
übersehen dass ich einfach ein $ davorsetzen muss. Der Rest ist klar.

Dankeschön

p80286 12. Mai 2015 21:52

AW: String aus Hex konvertieren.
 
-- hat sich erledigt --
Gruß
K-H

Dalai 12. Mai 2015 21:53

AW: String aus Hex konvertieren.
 
@Popov: String von hinten nach vorne durchgehen, würde das Problem mit den Nullbytes lösen, sofern man beim ersten Nullbyte die Schleife verlässt ;) (und nebenbei die unwichtigen führenden Nullen ignorieren).

@Kostas: Wieso heißt die Funktion HexToInt, wenn ein Char rauskommt?

MfG Dalai


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:43 Uhr.
Seite 1 von 2  1 2      

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