View Full Version : Hex-Umwandlung
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?
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. ;- )
Nun, ggf. kennt ja jemand noch die Befehle BITON und BITOFF.
Damit solltest du das doch noch hinbekommen.
Als Free-Version gibts da %bitor(....).
vielen Dank an alle Helfenden. Werde das auprobieren. Grüße A.
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;
lieben Dank für die Hilfe !! Grüße A.
Hallo nochmals, also BIN => HEX funktioniert einwandfrei. Umgekehrt ginge das dann auch ?
Also dann HEX => BIN
LG
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;