Inhalt eines Array dezimal darstellen
-
Guten Abend miteinander,
sitz gerade vor einer, für mich jedenfalls, sehr großen Aufgabe.
Ich schreibe ein Programm, welches einen Text in einem Array speichert. Wenn ich die Überwachung einschalte, sehe ich auch für jeden Buchstaben die Dezimalzahl (67 'C').
Jetzt bräuchte ich eigentlich nur die Dezimalzahlen, da ich in einem anderen Array ein Folge von Zeichen habe, welches auf jeweils einen Buchstaben zutrifft.
Das andere Array ist so geordnet, dass der Inhalt auf die Reihenfolge 0-Z zutrifft.Wenn ich jetzt ein A=65 im einen Feld habe, weiß ich dass der Buchstabe in dem anderen Feld an zehnter Stelle steht=>Pointer auf das Feld dez(A)-55 des anderen ArrayHat mir jemand einen Tipp, wie ich die schon sichtbare Dezimalzahlen auch abgreifen kann?
-
Klingt eher so, als wolltest du nicht die Dezimaldarstellung der Zahl, sondern den Wert der Zahl 9auf Deutsch: Du möchtest mit den Zahlen rechnen, nicht sie dir auf einem Bildschirm angucken). Das ist erstaunlich einfach, denn für den Computer sind Buchstaben und Zahlen das gleiche. Du kannst direkt damit rechnen:
'c' - 'a' == 2 'a' + 5 == 'f' // Ok, ganz streng genommen ist das Ergebnis hier vom Typ Integer, nicht vom Typ char, aber wenn du es als char ausgibst, bekommst du wieder 'f' '5' - '0' == 5 // Beachte den Unterschied zwischen Buchstaben (mit ' ') und normalen Zahlen '6' - '0' == 6 // Dieses Muster wird oft benutzt, um den Wert eines Ziffernzeichens zu erhalten //Achtung: 'B' - 'a' != 1 // Groß- und Kleinschreibung kann Probleme machen
Wenn du wirklich an der Dezimaldarstellung des Wertes interessiert bist, der zu einem Buchstaben gehört, dann geht das auch ganz einfach. Darstellung hat immer irgendetwas mit Ausgabe zu tun. Wir müssen also beispielsweise die ostreams bemühen (cout ist ein ostream). Die ostreams sind so schlau, den Datentyp zu erkennen von den Sachen, die sie ausgeben sollen. Wenn man etwas vom Datantyp char ausgibt, sorgen sie dafür, dass man letztlich einen Buchstaben zu sehen bekommt, auch wenn der char für den Computer auch bloß eine Zahl ist. Um eine Ausgabe in der Art einer Dezimalzahl zu erhalten muss man dem ostream vorgaukeln, dass er es mit einem int zu tun hat (oder einen anderem Typ, den er als Dezimalzahl ausgeben würde):
char a = 'a'; std::cout << static_cast<int>(a); // Hier können wir der Übersicht halber aber auch gerne mal einen C-Cast machen: std::cout << (int) a;