Anmelden

View Full Version : Hex-Umwandlung



Seiten : [1] 2

alex61
12-04-23, 07:17
Hallo zusammen,

folgende Frage:

ich habe in einem RPG-Programm ein normales Feld mit z.B. folgendem Inhalt:

FeldA - Inhalt: 10001011

In einem FeldB möchte ich diesen Inhalt nun in Hex abspeichern. Wie geht so was ?

Danke für Infos, Gruß A.

Andreas_Prouza
12-04-23, 07:53
Verstehe ich das richtig, du hast im FeldA einen Binären String den du als Hex String in FeldB haben willst?

alex61
12-04-23, 08:07
Hallo, ja genauso isses !

RobertMack
12-04-23, 08:29
Wenn's nur diese kleine, einmalige Aufgabe ist: zweimal %SCANRPL

Falls hinter dieser Frage etwas größeres steht, sollten wir das wissen (EBCDIC/ASCII, Base64 & Co. ;- )

Fuerchau
12-04-23, 09:17
Nun, ggf. kennt ja jemand noch die Befehle BITON und BITOFF.
Damit solltest du das doch noch hinbekommen.
Als Free-Version gibts da %bitor(....).

alex61
12-04-23, 10:05
vielen Dank an alle Helfenden. Werde das auprobieren. Grüße A.

B.Hauser
12-04-23, 12:05
Vielleicht habe ich es noch nicht ganz verstanden, aber das sollte mit der SQL-Funktion INTERPRET gehen. Du musst lediglich den Wert in der Variablen als Binary Hex angeben:


Values(Interpret(BX'10001011' as Integer));

Im RPG könnte die Konvertierung dann wie folgt aussehen:


DCL-S BinVar Char(8) inz('10001011');

DCL-S CmdSQL VarChar(256);
DCL-S Value Int(10);
//************************************************** *******************
CmdSQL = 'Values(Interpret(BX''' + BinVar + ''' as Integer)) +
into ?';
Exec SQL Prepare DynSQL from :CmdSQL;
Exec SQL Execute DynSQL Using :Value;
Dsply Value;

Return;

alex61
12-04-23, 12:21
lieben Dank für die Hilfe !! Grüße A.

alex61
12-04-23, 14:44
Hallo nochmals, also BIN => HEX funktioniert einwandfrei. Umgekehrt ginge das dann auch ?

Also dann HEX => BIN

LG

B.Hauser
12-04-23, 18:08
Versuch mal ob Du mit der SQL-Funktion HEX das gewünschte Ergebnis bekommst:


Values(Cast(Hex(Integer(256)) as Char(50)));

Oder im RPG

DCL-S Value Int(10);
DCL-S Text Char(50);

Value = 256;
Exec SQL Set :Text = Hex(:Value);
Dsply Text;