003
17.12.2017, 18:26 Uhr
ao
(Operator)
|
Zitat von prinz: |
Nun musst du die zweidimensionale array-variabele mit dem entsprechenden Code der EBCDIC-Tabelle initialisieren. Das ist wohl der größte Teil der Arbeit z.B. ebcdic[8][1] = 'a'.
Dann kannst du den eingelesenen String, der umgewandelt werden soll z.B. "Dieses Kapitel ist einfach" Buchstaben für Buchstaben mit der zweidimensionalen Tabelle vergleichen.
Das würde ich mit einer doppelt ineinander verschachtelten For-Schleife erledigen z.B.:
|
Das ist so ungefähr der umständlichste Weg, den es gibt.
Erstens kann man die Tabelle gleich beim Deklarieren initialisieren, dann kann man sich die Tipperei mit ebcdic[x][y] = 'a'; sparen. Man schreibt also sowas wie
C++: |
const char ebcdic[16][16] = { { 0x00, 0x01, 0x02, 0x03, 0x85, 0x09, 0x86, 0x7f, 0x87, 0x8d, 0x8e, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }, { 0x10, 0x11, 0x12, 0x13, 0x8f, 0x0a, 0x08, 0x97 /* und so weiter */ };
|
Das ist zwar auch reichlich langweilig, aber immer noch besser, als jedes Tabellenfeld einzeln zu indizieren und zuzuweisen. So ne Strafe haben nicht mal Maschbauer verdient
Zweitens kann man statt einer 16x16-Tabelle auch eine 1x256-Tabelle verwenden und einfach eine der tausend ebcdic-to-ascii-Tabellen herunterladen, die es im Internet gibt, gleich fix und fertig in C-Syntax.
Drittens kann man sich die Tabellen-Rückwärtssuche per Schleife schenken, indem man gleich die inverse Tabelle verwendet, nämlich ascii-to-ebcdic. Gibts genauso zum Download, und man greift einfach mit dem Ascii-Zeichen als Index in die Tabelle rein und kriegt den zugehörigen EBCDIC-Code raus. Dieser Post wurde am 17.12.2017 um 18:40 Uhr von ao editiert. |