-
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.
-
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 !
-
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:
Code:
Values(Interpret(BX'10001011' as Integer));
Im RPG könnte die Konvertierung dann wie folgt aussehen:
Code:
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:
Code:
Values(Cast(Hex(Integer(256)) as Char(50)));
Oder im RPG
Code:
DCL-S Value Int(10);
DCL-S Text Char(50);
Value = 256;
Exec SQL Set :Text = Hex(:Value);
Dsply Text;
-
Hallo und vielen lieben Dank für die Hilfe. Ich probiere das mal aus und melde mich nochmals. Das erste RPG hat TOP !!! geklappt. Danke.
-
HEX liefert leider nur '00' bis 'FF' und nicht binär.
Du kannst aber eine Tabelle "bits" mit den Hexwerten
x'01', x'02', x'04', ... x'80'
erstellen.
Dann
dcl-s fromChar char(1);
dcl-s binvalue varchar(8) inz;
dcl-s index bin(5);
for index = 1 to 8;
if %bitand(fromChar:bits(index)) > x'00';
binvalue += '1';
else;
binvalue += '0';
next;
Darüber kann man auch eine Funktion schreiben.
Similar Threads
-
By bie-dro in forum NEWSboard Programmierung
Antworten: 4
Letzter Beitrag: 25-02-21, 12:22
-
By KM in forum NEWSboard Programmierung
Antworten: 14
Letzter Beitrag: 18-05-17, 07:55
-
By msost in forum NEWSboard Programmierung
Antworten: 3
Letzter Beitrag: 02-03-16, 17:39
-
By Peet in forum NEWSboard Programmierung
Antworten: 9
Letzter Beitrag: 29-10-14, 07:54
-
By uweulmer in forum IBM i Hauptforum
Antworten: 1
Letzter Beitrag: 08-01-01, 13:43
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- You may not post attachments
- You may not edit your posts
-
Foren-Regeln
|
Erweiterte Foren Suche
Google Foren Suche
Forum & Artikel Update eMail
AS/400 / IBM i
Server Expert Gruppen
Unternehmens IT
|
Kategorien online Artikel
- Big Data, Analytics, BI, MIS
- Cloud, Social Media, Devices
- DMS, Archivierung, Druck
- ERP + Add-ons, Business Software
- Hochverfügbarkeit
- Human Resources, Personal
- IBM Announcements
- IT-Karikaturen
- Leitartikel
- Load`n`go
- Messen, Veranstaltungen
- NEWSolutions Dossiers
- Programmierung
- Security
- Software Development + Change Mgmt.
- Solutions & Provider
- Speicher – Storage
- Strategische Berichte
- Systemmanagement
- Tools, Hot-Tips
Auf dem Laufenden bleiben
|
Bookmarks