| Autor |
Nachricht |
Morgleh
Unregistrierter
|
Morgleh Unregistrierter
19:14:58 18.12.2006 Titel: |
String nach ASCII konvertieren |
Zitieren |
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. |
|
|
|
 |
akari
Moderator
Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11306
|
akari Moderator
19:16:43 18.12.2006 Titel: |
|
Zitieren |
Hallo
expliziert in int umwandlen
| C++: | char zeichen = 'a';
int ascii = int(zeichen);
zeichen = char(zeichen +2); | |
bis bald
akari |
_________________ In der nächsten Version wird alles besser!
|
|
 |
Morgleh
Unregistrierter
|
Morgleh Unregistrierter
19:21:11 18.12.2006 Titel: |
|
Zitieren |
|
 |
Morgleh
Unregistrierter
|
Morgleh Unregistrierter
19:33:12 18.12.2006 Titel: |
|
Zitieren |
Und wie funktioniert das wenn ich eine Zeichenkette (AnsiString) habe?
Wie kann ich die einzenlen Zeichen umwandeln und später wieder einfügen? |
|
|
|
 |
MWJK
Mitglied
Benutzerprofil
Anmeldungsdatum: 04.11.2006
Beiträge: 150
|
MWJK Mitglied
19:39:28 18.12.2006 Titel: |
|
Zitieren |
Hallo,
wenn du einen AnsiString hast, kannst du diesen wie ein Array behandeln.
beispiel:
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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 |
|
|
|
 |
CStoll
Mitglied
Benutzerprofil
Anmeldungsdatum: 17.10.2005
Beiträge: 17912
|
CStoll Mitglied
09:42:23 19.12.2006 Titel: |
|
Zitieren |
@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:
| C++: | std::string text = "Hallo";
for(int i=0;i<text.length();++i)
text[i]+=2; | | |
_________________ Wo ich bin, herrscht Chaos. Leider kann ich nicht überall sein.
|
|
 |
Zugriffsverletzung002
Unregistrierter
|
Zugriffsverletzung002 Unregistrierter
20:17:27 10.03.2008 Titel: |
|
Zitieren |
Hallo, ich schreibe gerade ein kleines Verschlüsselungsprogramm. In Delphi, hat das Prinzip geklappt, doch in C++ (Turbo) kommt mir einen Zugriffverletzung entgegengesprungen:
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | 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 ? |
|
|
|
 |
Integerman
Unregistrierter
|
Integerman Unregistrierter
20:20:47 10.03.2008 Titel: |
|
Zitieren |
| 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. |
|
|
|
 |
Integerman
Unregistrierter
|
Integerman Unregistrierter
20:30:32 10.03.2008 Titel: |
|
Zitieren |
| C++: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | 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() |
|
|
|
 |
akari
Moderator
Benutzerprofil
Anmeldungsdatum: 27.11.2004
Beiträge: 11306
|
akari Moderator
21:13:49 10.03.2008 Titel: |
|
Zitieren |
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 |
_________________ In der nächsten Version wird alles besser!
|
|
 |
Zugriffsverweigerung999
Unregistrierter
|
Zugriffsverweigerung999 Unregistrierter
22:13:35 10.03.2008 Titel: |
|
Zitieren |
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 ? |
|
|
|
 |
Zugriffsverletzung002
Unregistrierter
|
Zugriffsverletzung002 Unregistrierter
22:16:08 10.03.2008 Titel: |
|
Zitieren |
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()) ? |
|
|
|
 |
Nanyuki
Mitglied
Benutzerprofil
Anmeldungsdatum: 20.12.2005
Beiträge: 717
|
Nanyuki Mitglied
23:15:48 10.03.2008 Titel: |
|
Zitieren |
| C++: | 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. |
Zuletzt bearbeitet von Nanyuki am 23:18:18 10.03.2008, insgesamt 1-mal bearbeitet |
|
 |
Zugriffsverletzung002
Unregistrierter
|
Zugriffsverletzung002 Unregistrierter
16:34:34 11.03.2008 Titel: |
|
Zitieren |
Vielen, Vielen Dank an Nanyuki. Bie Pascal bzw. Delphi geht der Index immer bei 0 los - Problem geklärt.
Ist wirklich en tolles Forum!!! |
|
|
|
 |
Kolumbus
Mitglied
Benutzerprofil
Anmeldungsdatum: 22.05.2007
Beiträge: 1289
|
Kolumbus Mitglied
13:05:27 28.03.2008 Titel: |
|
Zitieren |
Bei VCL(C++Builder) geht im Allgemeinen der Index auch bei 0 los, nur bei AnsiString nicht! |
_________________ XP Prof SP3, Borland-IDE: BDS2006 Prof v10 & C++Builder 3 Std auf Athlon 64 X2 4200+, 1GB RAM <Fehlen Info's/Beschreibung dürftig? Bitte Nachfragen!> Nur Eines übersteigt die Dummheit des einzelnen Menschen; die Dummheit vieler Menschen.
|
|
 |
plg
Unregistrierter
|
plg Unregistrierter
11:06:13 22.10.2010 Titel: |
ASCII-Encoder und ASCII-Decoder |
Zitieren |
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 |
|
|
|
 |
plg
Unregistrierter
|
plg Unregistrierter
11:07:00 22.10.2010 Titel: |
|
Zitieren |
|
 |
Linnea
Mitglied
Benutzerprofil
Anmeldungsdatum: 03.06.2004
Beiträge: 1600
|
Linnea Mitglied
11:29:46 22.10.2010 Titel: |
|
Zitieren |
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. |
_________________ Zitat von Joe_M. "... DAS WORT LINNEAS: Und es stand geschrieben in der Hilfe zum BCB soll er suchen, bis er fündig ward, oder dem Greisentum anheim fiel."
|
|
 |
ItwasluckBBS2
Unregistrierter
|
ItwasluckBBS2 Unregistrierter
10:43:21 08.05.2012 Titel: |
|
Zitieren |
Hallo Jungens,
wießt ihr wie man diese ASCIII Codes andersrum schreiben kann?
z.b.
| Code: | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | #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;
} | | |
|
|
|
 |
Braunstein
Mitglied
Benutzerprofil
Anmeldungsdatum: 16.05.2002
Beiträge: 6865
|
Braunstein Mitglied
08:18:17 11.05.2012 Titel: |
|
Zitieren |
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++? |
|
|
|
 |