3 Byte (ASCII)Hex Zahl in Integer umwandeln

Für Fragen von Einsteigern und Programmieranfängern...
Antworten
DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

3 Byte (ASCII)Hex Zahl in Integer umwandeln

Beitrag von DL3AD »

Hallo,

ich stehe irgendwie auf dem Schlauch :shock:

Folgendes Problem - ich habe einen Antwortstring aus dem ich mir 3 ASCII Zeichen herauskopiere.
Diese 3 Zeichen stellen einen Hex-Wert dar den ich in einen Integerwert wandeln möchte.

z.B.
1. ASCII-Zeichen ist 2A hex
2. ASCII-Zeichen ist CD hex
3. ASCII-Zeichen ist 08 hex

bei der Umwandlung in interger soll dann 2805000 rauskommen.

Die Vorwärtsconvertierung funktioniert und mein Controller den ich anspreche reagiert auch so wie muss.

Gruß Frank

Benutzeravatar
theo
Beiträge: 10867
Registriert: Mo 11. Sep 2006, 19:01

Re: 3 Byte (ASCII)Hex Zahl in Integer umwandeln

Beitrag von theo »

Verstehe nicht genau, wo dein Problem liegt.
So?

Code: Alles auswählen

i:=StrToInt('$2ACD08');

mschnell
Beiträge: 3444
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: 3 Byte (ASCII)Hex Zahl in Integer umwandeln

Beitrag von mschnell »

n := ord(a[1])*$10000 + ord(a[2])*$100 + ord(a[3]);

-Michael

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: 3 Byte (ASCII)Hex Zahl in Integer umwandeln

Beitrag von DL3AD »

Hmm

hier noch mal der Code wie die drei ASCII Zeichen erzeugt werden.

Code: Alles auswählen

  //Frequenz-String aufbereiten
  qrg_hex:= inttohex((StrToInt(qrg) * 100),6);
  qrg_str:= '';
  qrg_str:= qrg_str + Chr(StrToInt('$' + copy(qrg_hex,1,2)));
  qrg_str:= qrg_str + Chr(StrToInt('$' + copy(qrg_hex,3,2)));
  qrg_str:= qrg_str + Chr(StrToInt('$' + copy(qrg_hex,5,2)));     
An qrg wird der String '28050' übergeben.
In qrg_str ist das Stringsegment welches auch in der Antwort enthalten ist.
Nun möchte ich aus dem Stringsegment qrg_str wieder 2805000 machen - hier zwei Nullen mehr weil mit 100 multiplizeirt wurde.

Gruß Frank

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: 3 Byte (ASCII)Hex Zahl in Integer umwandeln

Beitrag von DL3AD »

...dachte ich habe es - klappt doch nicht.

wp_xyz
Beiträge: 5134
Registriert: Fr 8. Apr 2011, 09:01

Re: 3 Byte (ASCII)Hex Zahl in Integer umwandeln

Beitrag von wp_xyz »

Ich versteh' die ganz Fragestellung nicht: Du hast einen Zahlen-String einem bestimmten Zahlenwert und möchtest einen String, bei dem die Zahl mit 100 multipliziert ist, also zwei Nullen angehängt sind. Warum nicht gleich so:

Code: Alles auswählen

qrg_str := qrg + '00'; 

DL3AD
Beiträge: 478
Registriert: Fr 13. Sep 2013, 12:07
OS, Lazarus, FPC: Debian Bullseye (L 2.2.0)
CPU-Target: 64Bit
Wohnort: Rügen

Re: 3 Byte (ASCII)Hex Zahl in Integer umwandeln

Beitrag von DL3AD »

... nun klappt es - der Hinweis von Michael war ziehlführend - hatte nur einen Tippfehler drin.

Danke Michael !

Gruß
Frank

Antworten