String nach ASCII konvertieren
-
Wie kann ich ich ein Zeichen in ASCII-Code umwandeln?
Ich will z.B: Das Zeichen "a" in den ASCII-Zahl "64" umwandeln mit 2 Addieren und wieder in ein Zeichen (String) umwandeln.
Mit StrToInt() meckert Borland immer sobald er ein Zeichen bekommt und keine ZeichenZahl.
-
Hallo
expliziert in int umwandlen
char zeichen = 'a'; int ascii = int(zeichen); zeichen = char(zeichen +2);
bis bald
akari
-
besten Dank!
-
Und wie funktioniert das wenn ich eine Zeichenkette (AnsiString) habe?
Wie kann ich die einzenlen Zeichen umwandeln und später wieder einfügen?
-
Hallo,
wenn du einen AnsiString hast, kannst du diesen wie ein Array behandeln.
beispiel:
AnsiString zeichen = 'Hallo'; char zeichen1 = zeichen[1]; char zeichen2 = zeichen[2]; char zeichen3 = zeichen[3]; char zeichen4 = zeichen[4]; char zeichen5 = zeichen[5]; int ascii1 = int(zeichen1); inr ascii2 = int(zeichen2); . . . zeichen1 = char(zeichen1 + 2); zeichen2 = char(zeichen2 + 2); . . . zeichen = zeichen1 + zeichen2 + zeichen3 + zeichen4 + zeichen5;
Das ist jetzt die ausführliche behandlung der strings, es geht sicher kürzer zusammengefasst, hier nur ausführlich erklärt, damit du verstehst was dahinter steckt.
Gruß
MWJK
-
@MWJK: Erstens schreibt man String-Literale in doppelten Anführungszeichen ". Und zweitens: Warum so umständlich? Das kann man doch auch in einer Schleife und ohne Zwischenvariable lösen:
std::string text = "Hallo"; for(int i=0;i<text.length();++i) text[i]+=2;
-
Hallo, ich schreibe gerade ein kleines Verschlüsselungsprogramm. In Delphi, hat das Prinzip geklappt, doch in C++ (Turbo) kommt mir einen Zugriffverletzung entgegengesprungen:
AnsiString Code(AnsiString keyword, AnsiString text) { int i, pos, key; AnsiString dummy; pos = 0; for (i=0; text.Length(); i++) { if (pos = keyword.Length()) { pos = 0; } else { pos += 1; } key = int(text[i]) + int(keyword[pos]); dummy += char(key); } return dummy; }
Der Fehler liegt bei "int()", aber wenn ich gearde richtig gelesen habe, müsste es doch eigentlich klappen - kann mir jemand helfen ?
-
akari schrieb:
zeichen = char(zeichen +2);
Ich frag mal in die Runde, warum "+2"? Geht was beim konvertieren nach Integer verloren? Wenn ja was? Reine Neugier.
-
AnsiString Code(AnsiString keyword, AnsiString text) { int i, pos, key; AnsiString dummy; pos = 0; for (i=0; i<text.Length(); i++) { if (pos == keyword.Length()) { pos = 0; } else { pos++; } key = StrToInt(text[i]) + StrToInt(keyword[pos]); dummy = dammy + char(key); // Hier vielleicht das char(key+2) von akari verwenden? } return dummy; }
Merke
Pascal = ist in C++ ==
und := ist = in C++Der for fehlte auch die Bedingung i<text.Length()
-
Hallo
Integerman schrieb:
akari schrieb:
zeichen = char(zeichen +2);
Ich frag mal in die Runde, warum "+2"? Geht was beim konvertieren nach Integer verloren? Wenn ja was? Reine Neugier.
Nein es geht natürlich nichts verloren. Das +2 ergibt sich aus der Fragestellung von Morgleh.
bis bald
akari
-
Hallo,
vielen Dank! Das mit == und i< muss ich wohl vergessen haben - leider kommt immernoch eine zugrffsverweigerung, gehe ich auf anhalten wird mir die Funktion von int() in strings.h geoeffnet - muss ich noch etwas anderes einbinden oder woran könnte der fehler noch liegen ?
-
Hallo, danke erst mal, leider immer noch nicht alles perfekt - das StrToInt bringt mir nichts, dann müsste ja Edit1.Text eine Zahl beinhalten - ich möchte die Ordinalzahl (in Delphi ord()) ?
-
AnsiString Code(const AnsiString& keyword, AnsiString text) { for (int i=1;i<=text.Length();i++)text[i]+=keyword[(i-1)%keyword.Length()+1]; return text; }
Ist das, was du erreichen wolltest?
Du brauchst übrigens kein ord() oder dergleichen, text[i] gibt dir ein char, mit dem du auch rechnen kannst.Edit: deine Zugriffsverletzung könnte daher kommen, dass die Indexierung bei AnsiStrings bei 1 beginnt, du aber versuchst auf text[0] zuzugreifen.
-
Vielen, Vielen Dank an Nanyuki. Bie Pascal bzw. Delphi geht der Index immer bei 0 los - Problem geklärt.
Ist wirklich en tolles Forum!!!
-
Bei VCL(C++Builder) geht im Allgemeinen der Index auch bei 0 los, nur bei AnsiString nicht!
-
Ich habe die folgende Aufgabestellung : Entwickeln Sie ein Programm in C++, das vier beliebige Zeichen von der Tastatur einliest und anschließend die Dezimalwerte des ASCII- Codes der vier Zeichen auf dem Bildschirm ausgibt.
Beispiel: a=97, 5=53, %=37, ?=63
-
danke im voraus
-
und was genau ist nun das Problem?
Falls du möchtest, daß dir das jemand programmiert: frag mal im Projekteforum, gegen einen entsprechenden Obulus wird sich da bestimmt jemand finden.
Alternativ und kostengünstiger ist natürlich Eigeninitiative.
-
Hallo Jungens,
wießt ihr wie man diese ASCIII Codes andersrum schreiben kann?
z.b.
#include<stdio.h> #include<string.h> int main() { char Zeile [81]; int Zahl; printf("Bitte geben sie einen Satz ein: "); gets (Zeile); printf("\n"); Zahl = strlen(Zeile); for (int i = 0; i < strlen(Zeile); i++) { printf("%i ",Zeile[i]*Zahl); } printf("\n\n"); return 0; }
-
Hallo,
Es wäre wohl vernünftig dafür einen neuen Thread aufzumachen. Deinen Code nach zu urteilen auch eher im ANSI-C Forum. Dein Code ist kein C++.
Willst du also C oder C++?