Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » String in Ascii umwandeln und zurück

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
17.02.2004, 08:21 Uhr
~Puschel
Gast


Moin moin

hat emand ne ahnung wie ich einen String in ASCII-Code(also die Zahl) umwandle? und das glaich zurück.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
17.02.2004, 08:35 Uhr
ao

(Operator)


Ein String besteht aus einer Folge von Zeichen, und jedes Zeichen hat seinen eigenen ASCII-Code. *Den* ASCII-Code des Strings gibt es nicht.

Einen String zeichenweise in ASCII-Codes "umwandeln" geht z.B. so:


C++:
char s [] = "Hallo"; /* ein String */

char c = s[0]; /* Das erste Zeichen */
int nAscii = c; /* sein ASCII-Code */

/* die anderen Zeichen genauso */



Der ASCII-Code eines Zeichens ist also einfach sein Zahlenwert.

ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
17.02.2004, 19:36 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


Also nochmal ganz genau formuliert.
Bei diesem Problem geht es um das Caesar Script(Verschlüsselung)
kennt jemand dort eine Methode wie ich das bewältigen kann?

Also ich gebe ein Wort ein dieses soll dann umgewandelt werden in den ASCII Zahlenwert. Der Zahlenwert soll dann um einen Faktor (den man bestimmt) erhöht werden. Die neue Zahl die dann vorhanden ist soll dann in den jeweiligen Buchstaben gewandelt werden.
--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
17.02.2004, 20:01 Uhr
Pablo
Supertux
(Operator)


Ich kenn den Algorithmus nicht. Aber, vielleicht hilft die das weiter:


C++:
#include <stdio.h>
int main()
{
    int i, l;
    char text[]="Hallo";
    l=strlen(text);
    printf("Text=\"%s\"\n",text);
    for(i=0; i<l; ++i) {
       printf("Buchstabe '%c' hat ASCII-Code: %d. Wird umgewandelt und '%c' mit dem Code %d\n", text[i], text[i], text[i]+1, text[i]+1);
     text[i]+=1;
    }
    printf("Cod.Text=\"%s\"\n",text);
    return 0;
}



Ausgabe:

Code:
Text="Hallo"
Buchstabe 'H' hat ASCII-Code: 72. Wird umgewandelt und 'I' mit dem Code 73
Buchstabe 'a' hat ASCII-Code: 97. Wird umgewandelt und 'b' mit dem Code 98
Buchstabe 'l' hat ASCII-Code: 108. Wird umgewandelt und 'm' mit dem Code 109
Buchstabe 'l' hat ASCII-Code: 108. Wird umgewandelt und 'm' mit dem Code 109
Buchstabe 'o' hat ASCII-Code: 111. Wird umgewandelt und 'p' mit dem Code 112
Cod.Text="Ibmmp"


--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 17.02.2004 um 20:05 Uhr von Pablo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
18.02.2004, 08:52 Uhr
ao

(Operator)



Zitat:
Puschel postete
Also nochmal ganz genau formuliert.
Bei diesem Problem geht es um das Caesar Script(Verschlüsselung)
kennt jemand dort eine Methode wie ich das bewältigen kann?

Also ich gebe ein Wort ein dieses soll dann umgewandelt werden in den ASCII Zahlenwert. Der Zahlenwert soll dann um einen Faktor (den man bestimmt) erhöht werden. Die neue Zahl die dann vorhanden ist soll dann in den jeweiligen Buchstaben gewandelt werden.

Die erste Hälfte steht schon oben in meinem Beispiel. Danach kommt das Erhöhen:

C++:
nAscii += X; /* X: Verschlüsselungszahl */


und das Zurückkopieren in einen String:

C++:
sCrypted [0] = (char) nAscii; /* fuer das erste Zeichen, die anderen analog */


mit der Annahme

C++:
char sCrypted [GENUG_ZEICHEN];



Beim Verschlüsseln musst du an einer Stelle aufpassen: Wenn du nur stur erhöhst, landest du bei einigen Buchstaben hinterm Z. Also bei jedem Zeichen prüfen: Ist der ASCII-Wert nach der Verschlüsselung größer als der von 'Z', dann ziehe den ASCII-Wert von 'Z' wieder ab, damit du wieder im Bereich der Buchstaben landest.

ao
ao
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
19.02.2004, 09:52 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


Also da seh ich nicht so ganz durch. Das was du dort schreibst ist doch C?
Kannst du das mal in C++ formulieren weil er haut mir dann ganz schön viele Fehler rein.
--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
19.02.2004, 10:08 Uhr
(un)wissender
Niveauwart


Es fehlt nur #include <cstring>
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
19.02.2004, 10:15 Uhr
Puschel
Dr. med. Dipl. Prof. Virus


Hab den Quelltext mal irgend wie zusammen gebastelt!?

Er hat nur noch einen Fehler er kennt strlen nicht.

C++:
#include <stdio.h>
#include <cstring>
int main()
{
char s [] = "Hallo"; /* ein String */

char c = s[0]; /* Das erste Zeichen */
int nAscii = c; /* sein ASCII-Code */

    int i, l, X;
    char text[]="Hallo";
    l=strlen(text);
    printf("Text=\"%s\"\n",text);
    for(i=0; i<l; ++i) {
       printf("Buchstabe '%c' hat ASCII-Code: %d. Wird umgewandelt und '%c' mit dem Code %d\n", text[ i ], text[ i ], text[ i ]+1, text[ i ]+1);
     text[ i ]+=1;
     nAscii += X;
    }
    printf("Cod.Text=\"%s\"\n",text);
    return 0;
}



--
Wenn man nichts tut, glaubt man, daß man für alles die Verantwortung trägt.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
19.02.2004, 10:27 Uhr
(un)wissender
Niveauwart


Eine mögliche C++-Lösung:


C++:
#include <iostream>
#include <string>

int main()
{
    std::string text = "Hallo";
    std::cout << "Text=\"" << text << "\"" << std::endl;
    
    for(std::string::iterator i = text.begin(); i != text.end(); ++i)
    {
      
        std::cout << "Buchstabe " << *i
                  << " hat ASCII-Code: "
                  << static_cast<int>(*i) << ". "
                  << "Wird umgewandelt in " << *i + 1
                  << ", als Integer: " << static_cast<int>(*i + 1)
                  << std::endl;
       ++*i;
    }
    
    std::cout << "Cod.Text=\"" << text << "\"" << std::endl;
    return 0;
}


--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
19.02.2004, 10:41 Uhr
~Puschel
Gast


Hmm also einiges kenn ich davon nicht!
Die Wörter muss der Benutzer eingeben und den Faktor um was der Buchstabe verschoben wird auch.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: