Steuerzeichen von einem Sting in "hex" umwandeln

Mathias
Benutzer
Avatar
Gender: n/a
Location: Weingarten - Baden
Posts: 307
Registered: 07 / 2003
Subject:

Steuerzeichen von einem Sting in "hex" umwandeln

 · 
Posted: 20.05.2022 - 00:48  ·  #1
Hallo,
im Str2 sind zwei x-beliebige Steuerzeichen.
Wie kriegt man diese elegant in einen "Hex-Wert" umgewandelt.
----------------------------
wHex : word;
St2 : String[2];

St2:= #$01 + #$10;
soll ergeben:
wHex:= $0110;

St2:= #$F4 + #$40;
soll ergeben:
wHex:= $F440;
----------------------------

Danke

Gruß
Mathias
pvs-deck
PowerUser
Avatar
Gender:
Age: 53
Homepage: pvs-deck.de
Posts: 1340
Registered: 02 / 2009
Subject:

Re: Steuerzeichen von einem Sting in "hex" umwandeln

 · 
Posted: 20.05.2022 - 11:52  ·  #2
Hallo Mathias,

mir ist nicht ganz klar was Du machen willst, aber kennst Du die Funktion:

Code
100 – System Library - Standard
E-LAB Computers
4.10.6.23 HEXTOINT Bei StrToInt und der hexadezimalen Repräsentation ist Bedingung, dass der String mit dem Dollarzeichen "$" beginnt. Da es auch vorkommen kann, dass fertige Strings, z.B. aus einer Kommunikation, ohne "$" ankommen, macht es Sinn, diese Strings auch ohne Manipulation der ersten Stelle weiterverarbeiten zu können. Die Funktion erwartet zwar einen Hex-String, der aber kein "$" enthalten darf.
Function HexToInt (st : string) : integer [byte, int8, word, longint, longword];


Gruß
Thorsten
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2090
Registered: 03 / 2003
Subject:

Re: Steuerzeichen von einem Sting in "hex" umwandeln

 · 
Posted: 20.05.2022 - 12:10  ·  #3
Hallo Mathias,

was du suchst ist
Quote

Ordnungszahl eines Zeichens/Characters.
Function Ord (ch : char) : byte;
b:= ord (‘a’);


Theoretisch könnte auch das funktionieren:
A : Word;
b[@A] : Char;
c[@A+1] : Char;

Gruss
Harry
Mathias
Benutzer
Avatar
Gender: n/a
Location: Weingarten - Baden
Posts: 307
Registered: 07 / 2003
Subject:

Re: Steuerzeichen von einem Sting in "hex" umwandeln

 · 
Posted: 20.05.2022 - 15:16  ·  #4
Das funktioniert leider nicht:
wHex : word;
St2 : String[2];

St2:= #$01 + #$10;
wHex:= StrToInt (St2);
wHex:= HexToInt (St2);

In wX steht immer 0 drin.
Geht nur mit "sichtbaren" Zeichen.

-----------------------------------------
bHex : byte;
St1 : String[1];

bHex:= ord(St1);

Geht auch nicht.
Es wird ein Char erwartet keinen String.

-----------------------------------------

Hat jemand noch eine Idee?
Merlin
Administrator
Avatar
Gender:
Age: 24
Posts: 1373
Registered: 03 / 2005
Subject:

Re: Steuerzeichen von einem Sting in "hex" umwandeln

 · 
Posted: 20.05.2022 - 15:53  ·  #5
HexToInt requires a hex value. Your values are binary.

This does what you need

Code
wHex := (256*Ord( st2[1] )) + Ord( St2[2])


But I wonder if you really need this at all.

st2 is really a word in hi-lo format. Are you reading a buffer? Can you not read as bytes rather than chars?
Mathias
Benutzer
Avatar
Gender: n/a
Location: Weingarten - Baden
Posts: 307
Registered: 07 / 2003
Subject:

Re: Steuerzeichen von einem Sting in "hex" umwandeln

 · 
Posted: 20.05.2022 - 16:51  ·  #6
Danke
hat geklappt!
Wäre in 100 Jahren nicht drauf gekommen.

Hatte die Kommunikation über die serielle Schnittstelle eigentlich fertig.
Alles mit Strings und abgeschlossen mit CR-LF.
Was noch fehlt ist ein Prüfsummencheck. Kommt zum Schluß.
Kunde hat letzte Woche umgeschmissen und will unbedingt die ersten beiden Zeichen als Hex-Steuerbefehl.
Diskussion zwecklos.
Deshalb diese Umstände.

Gruß
Mathias
Harry
Moderator
Avatar
Gender:
Location: zwischen Augsburg und Ulm
Age: 59
Posts: 2090
Registered: 03 / 2003
Subject:

Re: Steuerzeichen von einem Sting in "hex" umwandeln

 · 
Posted: 20.05.2022 - 17:05  ·  #7
Ja ich finde das auch seltsam, daß ein Char manchmal kein String[1] ist.

Gruss
Harry, der morgen eine Woche angeln geht :)
Mathias
Benutzer
Avatar
Gender: n/a
Location: Weingarten - Baden
Posts: 307
Registered: 07 / 2003
Subject:

Re: Steuerzeichen von einem Sting in "hex" umwandeln

 · 
Posted: 22.05.2022 - 03:38  ·  #8
Na dann Harry,
Petri Heil! 8-)
Selected quotes for multi-quoting:   0

Registered users in this topic

Currently no registered users in this section

The statistic shows who was online during the last 5 minutes. Updated every 90 seconds.
MySQL Queries: 15 · Cache Hits: 14   138   152 · Page-Gen-Time: 0.021567s · Memory Usage: 2 MB · GZIP: on · Viewport: SMXL-HiDPI